[英]Custom style property - XAML
是否可以創建一個自定義屬性並將其綁定到后面代碼中的某個值。
<Style TargetType="{x:Type TreeViewItem}" x:Key="ContainerStyle">
<Setter Property="IsEditable" Value="{Binding IsEditable, Mode=TwoWay}" />
<Style.Triggers>
<Trigger Property="IsEditable" Value="True">
<Setter Property="HeaderTemplate" Value="{StaticResource EditableTextBox}" />
</Trigger>
</Style.Triggers>
</Style>
我想做的是根據PersonViewModel類中設置的IsEditable的值在NotEditableText和EditableText模板之間進行交換。 但是我真的不怎么將所有東西綁定在一起。
解
<Style TargetType="{x:Type TreeViewItem}" x:Key="ContainerStyle">
<Setter Property="ViewModel:PersonViewModel.IsEditable" Value="{Binding IsEditable, Mode=TwoWay}" />
<Style.Triggers>
<Trigger Property="ViewModel:PersonViewModel.IsEditable" Value="True">
<Setter Property="HeaderTemplate" Value="{StaticResource EditableText}" />
</Trigger>
</Style.Triggers>
</Style>
如果您只需要通過代碼設置此樣式,則可以使用:
Style containerStyle = (Style)FindResource("ContainerStyle");
this.someTreeView.Items[0].Style = containerStyle;
是的,但是您的屬性必須是DependancyProperty 。 否則它將不會響應Binding事件。 添加DependancyProperty非常容易。
public static readonly DependencyProperty IsSpinningProperty =
DependencyProperty.Register(
"IsSpinning", typeof(Boolean),
);
public bool IsSpinning
{
get { return (bool)GetValue(IsSpinningProperty); }
set { SetValue(IsSpinningProperty, value); }
}
一旦創建了這樣的屬性,就可以按照場景中的描述在Style.Triggers中使用它。 您的屬性必須存在於TargetType="{x:Type MyType}"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.