在WPF中是否有像HTML div這樣的容器(這很容易),我可以在那裏定位容器中的所有文本塊?所以我不必在每個文本塊上指定樣式?有沒有一個容器,我可以針對多種元素的樣式
我有一個複雜的畫布,只在一個地區,我想定位文本塊。所以,如果我嘗試格在畫布座標被忽略
<StackPanel>
<StackPanel.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="White"></Setter>
<Setter Property="FontFamily" Value="Arial"></Setter>
</Style>
</StackPanel.Resources>
<TextBlock Canvas.Left="87" Canvas.Top="210">
mytext1
</TextBlock>
<TextBlock Canvas.Left="87" Canvas.Top="232">
mytext2
</TextBlock>
<TextBlock Canvas.Left="87" Canvas.Top="254">
mytext2
</TextBlock>
</StackPanel>
和我的文本塊出現在:
東西到這樣的效果(這裏不是StackPanel的其他東西,將工作作爲一種風格定位容器)畫布頂部。
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Canvas Width="500" Height="500">
<Grid>
<Grid.Resources>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Red"></Setter>
</Style>
</Grid.Resources>
<TextBlock Text="MyTextBlock1" Canvas.Left="300" Canvas.Top="300">
</TextBlock>
</Grid>
</Canvas>
你是指除了只使用網格? – jimmyjambles
目前還不清楚爲什麼你不能做你在第一個例子中所做的事情。至於使用'Grid'的問題,您需要將'Canvas'附加屬性移動到'Grid'而不是'TextBlock'上,因爲'Canvas'只會在其中查找這些屬性直接的孩子。 –
你能提供一些關於你想要達到的內容的更多信息嗎?通常我會使用一個'StyleSelector'來達到這個目的,但是目前還沒有辦法告訴哪個TextBlocks應用這個樣式而沒有設置附加屬性(所以你可以直接應用樣式EG Style = {StaticResource myStyle}) 。我有一種感覺'ItemsControl'在這裏很有用,但需要更多地瞭解你的需求。此外,您所需佈局的圖表會很好。 –