首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-12-25 
|ZYCWPF| WPF如何写样式,只对当前控件的直接子节点有效的样式呢?谢谢 有示例XAMLWindow x:Class_0_0_样

|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进行修改,而实现这个要求

谢谢

热点排行