我有一个Grid
和TextBlock
。我想在TextBlock
内设置所有Grid
的样式。所以我这样做:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Grid.Resources>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="0,0,0,15" />
</Style>
</Grid.Resources>
<StackPanel Grid.Column="0">
<TextBlock Text="myText" Style="{StaticResource TitleTextBlockStyle}" />
<TextBlock Text="myText" Style="{StaticResource TitleTextBlockStyle}" />
</StackPanel>
<StackPanel Grid.Column="1">
<TextBlock Text="123456" Style="{StaticResource TitleTextBlockStyle}" Foreground="{ThemeResource PhoneAccentBrush}" />
<TextBlock Text="123456" Style="{StaticResource TitleTextBlockStyle}" Foreground="{ThemeResource PhoneAccentBrush}" />
</StackPanel>
</Grid>
1)它不起作用。 TextBlock
没有得到任何Margins
。为什么呢?
2)如何在Style
代码中设置Foreground
s的TextBlock
和<Grid.Resources>
属性?
答案 0 :(得分:3)
1)它不起作用。 TextBlocks没有任何边距。为什么?的
它无效,因为您将样式“TitleTextBlockStyle
”分配给TextBlocks
。因此,您在Grid.Resources
中定义的隐式样式无法发挥作用。从Style="{StaticResource TitleTextBlockStyle}"
中删除TextBlock
部分,您的边距将会出现。
2)如何在TextBlock
代码中设置<Grid.Resources>
s的样式和前景属性?
和你设置其他所有内容一样:
<Setter Property="Foreground" Value="AliceBlue"/>
或者如果你有更复杂的画笔:
<Setter Property="Foreground">
<Setter.Value>
<!-- Whatever brush you want -->
<Setter.Value/>
</Setter>
我假设使用“设置TextBlocks的样式属性”,您实际上希望您的新样式从已定义的样式继承。在这种情况下,您可以将新样式基于现有样式:
<Style TargetType="TextBlock"
BasedOn="{StaticResource StyleToInheritFrom}">
或者,在您的情况下,大概是:
<Style TargetType="TextBlock" BasedOn="{StaticResource TitleTextBlockStyle}">
<Setter Property="Margin" Value="0,0,0,15" />
</Style>
完整的东西看起来像:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Grid.Resources>
<Style TargetType="TextBlock" BasedOn="{StaticResource TitleTextBlockStyle}">
<Setter Property="Margin" Value="0,0,0,15" />
<Setter Property="Foreground" Value="{ThemeResource PhoneAccentBrush}"/>
</Style>
</Grid.Resources>
<StackPanel Grid.Column="0">
<TextBlock Text="myText" />
<TextBlock Text="myText" />
</StackPanel>
<StackPanel Grid.Column="1">
<TextBlock Text="123456" />
<TextBlock Text="123456" />
</StackPanel>
</Grid
答案 1 :(得分:0)
您在寻找什么样的利润?如果您正在寻找左右边距,则由于您的保证金声明。声明如下:
<object Margin="left,top,right,bottom"/>
- or -
<object Margin="left,top"/>
- or -
<object Margin="thicknessReference"/>
现在,你只是添加一个底部边距。你也可以添加
保证金= “15”
将被解释为厚度参考并将所有值设置为15