簡體   English   中英

DataTrigger不起作用

[英]DataTrigger doesn't work

我在XAML中的風格如下:

<DataTrigger Binding="{Binding Path=ButtonStyle}" Value="CutLeft">
  <DataTrigger.Setters>
    <Setter Property="CornerRadius" TargetName="border" Value="0 11 11 0" />
    <Setter Property="CornerRadius" TargetName="border1" Value="0 10 10 0" />
  </DataTrigger.Setters>
</DataTrigger>

而這個XAML在我有按鈕的Window中:

<gui:MyCustomButton ButtonStyle="CutLeft"/>

在MyCustomButton代碼中:

public enum ButtonStyles {
    CutLeft, CutRight, Circular, Normal
}

public partial class MyCustomButton 
{
    [DefaultValue(ButtonStyles.Normal)]
    public ButtonStyles ButtonStyle { get; set; }
}

但這不起作用! 有小費嗎?

我認為這里有兩個問題。

首先是您沒有引發ButtonStyle的屬性更改通知。 將ButtonStyle更改為依賴項屬性,或在MyCustomButton上實現INotifyPropertyChanged,然后從ButtonStyle設置器引發PropertyChanged事件。 在這種情況下,依賴屬性方法可能會更好,因為在某些時候,有人會想要通過樣式設置ButtonStyle,並且只能設置DP的樣式。

第二個是您的數據觸發器似乎正在查看數據上下文,這可能不是控件。 (如果您在“輸出”窗口中查看,可能會看到關於無法在某些數據對象上找到'ButtonStyle'屬性的綁定錯誤。)您可以通過將RelativeSource={RelativeSource Self}到DataTrigger來解決此問題。 。 但是,如果按照建議將ButtonStyle更改為DP,則應該只能使用普通的舊觸發器,該觸發器會自動與要設置樣式的控件的屬性配合使用:

<Style.Triggers>
  <Trigger Property="ButtonStyle" Value="CutLeft">
    <Setter Property="CornerRadius" TargetName="border" Value="0 11 11 0" />
  </Trigger>
</Style.Triggers>

(另請注意,您無需指定Trigger.SettersDataTrigger.Setters元素DataTrigger.Setters閱讀器將為您填充該元素。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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