[英]WPF - Trigger not firing
嘗試執行應盡可能簡單的操作時遇到問題。 我已經嘗試使用Trigger
根據DependencyProperty
或DataTrigger
-我不能得到任何工作。
觸發器的XAML是:
<Style x:Key="FileWatchButton" BasedOn="{StaticResource {x:Type Button}}" TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="Main:Main.XmlFilesAvailableForLoading" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
並且相關的代碼背后是:
public static readonly DependencyProperty XmlFilesAvailableForLoadingProperty =
DependencyProperty.Register("XmlFilesAvailableForLoading", typeof(bool), typeof(Main));
public bool XmlFilesAvailableForLoading
{
get
{
try
{
return (bool)this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.DataBind,
(System.Windows.Threading.DispatcherOperationCallback)delegate { return GetValue(XmlFilesAvailableForLoadingProperty); },
XmlFilesAvailableForLoadingProperty);
}
catch (Exception)
{
return (bool)XmlFilesAvailableForLoadingProperty.DefaultMetadata.DefaultValue;
}
}
set
{
this.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.DataBind,
(System.Threading.SendOrPostCallback)delegate{ SetValue(XmlFilesAvailableForLoadingProperty, value); }, value);
}
}
基本上,演示者可以正確設置dp(它基於一個或多個文件的FileSystemWatcher
類),但是不會Trigger
。 這是線程問題嗎?
謝謝。
目前尚不清楚代碼是否完整,但是看起來觸發器中的Property路徑可能是錯誤的。 樣式化的按鈕是否具有Main屬性? 我猜不是; 看起來您正在嘗試觸發另一個名為Main的元素的屬性,對嗎?
無論如何,都不需要名稱空間前綴。 如果按鈕具有名為Main的屬性,則可以直接解決此問題; 如果沒有,那么前綴將無濟於事。
我的猜測是,您可能需要一個DataTrigger,其綁定引用Main元素:
<local:Main Name="MyMain" ... /> <!-- this has the XmlFilesAvailableForLoading property -->
<DataTrigger Binding="{Binding XmlFilesAvailableForLoading, ElementName=MyMain}"
Value=True>
<Setter Property="Background" Value="Red" />
</DataTrigger>
無關緊要的是,您在DP getter和setter中應該有任何非樣板實現。 請記住,綁定和樣式系統將繞過getter和setter並直接與基礎存儲進行對話。 因此,我強烈建議將其改回為普通的GetValue和SetValue調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.