一个实例UserControl中的WPF样式所有控件

时间:2015-01-22 09:18:58

标签: wpf

是否可以在其上设置一个带有几个控件的UserControl,但重用UserControl时只应用于所有控件的某个样式或模板?

例如local:UserControl1 Grid.Column =“1”的控件是否应用了样式/模板?

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <local:UserControl1  />
    <local:UserControl1 Grid.Column="1" />
</Grid>

1 个答案:

答案 0 :(得分:0)

如果不实现相应的行为,则无法根据样式控件的某些条件选择性地应用样式。不过,你可以用样式触发器实现同样的功能。您可以在样式触发器中设置控件的模板,因此可以使用开箱即用的功能基于模板化控件的某些条件应用特定模板。在示例中,背景是有选择地设置的:

<Grid>
    <Grid.Resources>
        <!-- Defining the TargetType but no x:Key will apply the style
        to ALL children of this grid of the specified type -->
        <Style TargetType="{x:Type local:UserControl1}">
            <Style.Triggers>                    
                <Trigger Property="Grid.Column" Value="1">
                    <!-- All setters here get applied only when 
                    trigger condition is met -->
                    <Setter Property="Background" Value="Blue" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <local:UserControl1  />
    <local:UserControl1 Grid.Column="1" />
</Grid>