友好的方式克隆样式与相似的模式
本文关键字:相似 样式 模式 方式克 | 更新日期: 2023-09-27 18:10:17
我有8个样式都是copy &粘贴,但对绑定进行少量更改。下面是一个例子:
<Style x:Key="CardR0" TargetType="usercontrol:Card">
<Setter Property="Played" Value="{Binding Combat.BlaBla.R.Played[0]}"/>
<Setter Property="Won" Value="{Binding Combat.BlaBla.R.Won[0]}"/>
<Setter Property="Turn" Value="{Binding Combat.BlaBla.R.Turn[0]}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding RightSelectedCard}" Value="0">
<Setter Property="IsSelected" Value="true"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="CardR1" TargetType="usercontrol:Card">
<Setter Property="Played" Value="{Binding Combat.BlaBla.R.Played[1]}"/>
<Setter Property="Won" Value="{Binding Combat.BlaBla.R.Won[1]}"/>
<Setter Property="Turn" Value="{Binding Combat.BlaBla.R.Turn[1]}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding RightSelectedCard}" Value="1">
<Setter Property="IsSelected" Value="true"/>
</DataTrigger>
</Style.Triggers>
</Style>
...
<Style x:Key="CardL0" TargetType="usercontrol:Card">
<Setter Property="Played" Value="{Binding Combat.BlaBla.L.Played[0]}"/>
<Setter Property="Won" Value="{Binding Combat.BlaBla.L.Won[0]}"/>
<Setter Property="Turn" Value="{Binding Combat.BlaBla.L.Turn[0]}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding LeftSelectedCard}" Value="0">
<Setter Property="IsSelected" Value="true"/>
</DataTrigger>
</Style.Triggers>
</Style>
你明白了,左边从0到3,右边从0到3。
有一种XAML方法可以用模式或其他东西创建(或其他)所有这些,或者我必须使用旧的(如果我忘记了一些东西的话很危险)复制&粘贴?
编辑:Combat.BlaBla…对于每一方都是特定的,尽量使它简短忘记它=P
如果你愿意,你可以创建一个主样式,然后从它派生的样式:
<Page.Resources>
<Style x:Key="MainStyle" TargetType="local:RegularPolygon">
<Setter Property="Fill" Value="Red"/>
</Style>
<Style x:Key="SecondaryStyle" TargetType="local:RegularPolygon" BasedOn="{StaticResource MainStyle}" >
<Setter Property="Stroke" Value="Blue"/>
</Style>
</Page.Resources>
然后将你需要的样式应用到特定元素