簡體   English   中英

自定義樣式屬性-XAML

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM