创建基于另一个正在使用数据模板的样式

时间:2018-08-27 01:22:58

标签: wpf

我有一个使用TextBoxes的ListBox样式,如下所示:

       <Style x:Key="MyListBoxStyle" TargetType="ListBox">
        <Setter Property="Background" Value="LightGray"/>
        <Setter Property="BorderThickness" Value="2"/>
        <Setter Property="BorderBrush" Value="Black"/>
        <Setter Property="ItemTemplate">
            <Setter.Value>
                <DataTemplate>
                    <TextBox Text="{Binding Mode=OneWay}" Background="LightGray"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

我将这种样式用于许多ListBox显示只读数据。

我还拥有一组ListBox,我希望在其中单击其中的一个TextBox,然后执行一些操作。所以我要做的是在TextBox上附加一个Click事件。理想情况下,我想利用上述样式而不必重新输入所有样式,而只需添加添加事件绑定的新样式即可。怎么会这样?

1 个答案:

答案 0 :(得分:1)

Style.BaseOn

<Style x:Key="MyListBoxStyle" TargetType="ListBox">
    <Setter Property="Background" Value="LightGray"/>
    <Setter Property="BorderThickness" Value="2"/>
    <Setter Property="BorderBrush" Value="Black"/>
    <Setter Property="ItemTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBox Text="{Binding Mode=OneWay}" Background="LightGray"/>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>
<Style x:Key="MyListBoxStyle2" BasedOn="{StaticResource MyListBoxStyle}" TargetType="ListBox">
    <Setter Property="ItemTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBox Text="{Binding Mode=OneWay}" Background="LightGray" GotFocus="TextBox_GotFocus"/>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>