读书人

|ZYCWPF| WPF怎么写样式只对当前控件

发布时间: 2012-12-25 16:18:28 作者: rapoo

|ZYCWPF| WPF如何写样式,只对当前控件的直接子节点有效的样式呢?谢谢 有示例XAML


<Window x:Class="_0_0_样式示例.Grid下统一指定控件样式"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Grid下统一指定控件样式" Height="300" Width="600">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.Resources>
<Style TargetType="StackPanel"><!--我这里只想这个样式对当前Grid的直接子节点有效,子节点的子节点不管-->
<Setter Property="Margin" Value="5 5 5 5"/>
</Style>
</Grid.Resources>
<StackPanel Background="LightBlue" Grid.Row="0" Grid.Column="0">
<StackPanel Background="AntiqueWhite">
<TextBlock Text="我是在StackPanel里面的StackPanel,并不是在Gird的下级的,所以不相继承到Margin的设置" TextWrapping="Wrap"></TextBlock>
</StackPanel>
</StackPanel>
<StackPanel Background="Aqua" Grid.Row="0" Grid.Column="1">
</StackPanel>
<StackPanel Background="Red" Grid.Row="1" Grid.Column="0">
</StackPanel>
<StackPanel Background="Yellow" Grid.Row="1" Grid.Column="1">
</StackPanel>
</Grid>
</Window>

如上面定义的Margin对Grid下的所有StackPanel都起了效果,
但我想写的样式为:样式对当前Grid的直接子节点有效,子节点的子节点无效
谢谢
[最优解释]

<Grid.Resources>
<Style TargetType="StackPanel">
<!--我这里只想这个样式对当前Grid的直接子节点有效,子节点的子节点不管-->
<Setter Property="Margin" Value="5 5 5 5"/>
<Style.Resources>
<Style TargetType="StackPanel">


<Setter Property="Margin" Value="0"/>
</Style>
</Style.Resources>
</Style>
</Grid.Resources>


[其他解释]
加x:Key
[其他解释]
引用:
XML/HTML code?1234567891011 <Grid.Resources> <Style TargetType="StackPanel"> <!--我这里只想这个样式对当前Grid的直接子节点有效,子节点的子节点不管--> <Setter Property="Margin" Value="5 5……

这个OK

或者直接写在控件里面
[其他解释]
引用:
加x:Key

不要。
你这样的话,我还得对Grid里面的StackPanel加Styel=Key
我就是不想去对Grid里面的StackPanel进行修改,而实现这个要求

谢谢

读书人网 >C#

热点推荐