2010-09-21 38 views
0

我嘗試通過XAML和觸發器設置本地屬性。
這個想法是通過底部的「應用」按鈕「複製」大多數設置頁面中存在的行爲。
只要用戶修改頁面中的控件/設置,我想將局部變量(「FilterModified」)設置爲「true」。
我嘗試這樣做,但不知何故,我不能讓它編譯:XAML和本地變量/自動屬性

<ToggleButton.Triggers> 
    <Trigger Property="ToggleButton.IsChecked"> 
     <Setter Property="myUserControl.FilterModified" Value="True"/> 
    </Trigger> 
</ToggleButton.Triggers> 

在代碼中,FilterModified的聲明是這樣的:

public partial class myUserControl: UserControl 
{ 
    public static Boolean FilterModified { get; set; } 

有人能幫助我嗎?
Thx提前。
弗雷德

回答

1

這將幫助,如果你發佈你得到的編譯錯誤,但我懷疑你需要FilterModified依賴屬性,而不是常規的。最簡單的方法是在Visual Studio中,按Tab鍵鍵入propdp並設置突出顯示的字段,以正確的價值觀:

public bool FilterModified 
{ 
    get { return (bool)GetValue(FilterModifiedProperty); } 
    set { SetValue(FilterModifiedProperty, value); } 
} 

// Using a DependencyProperty as the backing store for FilterModified. This enables animation, styling, binding, etc... 
public static readonly DependencyProperty FilterModifiedProperty = 
     DependencyProperty.Register("FilterModified", typeof(bool), typeof(ownerclass), new UIPropertyMetadata(false)); 

有了這個,你應該張貼工作XAML,我想。

編輯:但是,當然,我會建議尋找MVVM(模型 - 視圖 - 視圖模型)做這樣的事情,只留下綁定做沉重的舉動;那就意味着將FilterModified移動到ViewModel中,並僅從那裏處理它,而不是從與該精確控件綁定的代碼隱藏中處理它。

+0

它是如此「複雜」?我需要的東西真是微不足道。我可以實現'Check'和'Uncheck'事件,但我確定,應該可以使用XAML來完成。 我將'Setter'行更改爲''。 現在它編譯,但設計師抱怨「錯誤5值'真'不能被分配給屬性'值'。對象引用未設置爲對象的實例。」 – Fred 2010-09-21 10:21:41

+0

我已經實現了你的答案。現在編譯,但設計者說: 錯誤5觸發器集合成員必須是EventTrigger類型。 不知道有什麼問題! – Fred 2010-09-21 11:29:49

+0

是的;實際上,對於可以在控件中內聯的觸發器有限制:只有事件觸發器(EventTrigger);所有其他觸發器只能放置在樣式中。所以另一種方法是爲你的控件定義一個默認樣式(總是推薦這個樣式),並將觸發器放置在該樣式中。現在沒有時間給你看樣品,可能是我回家的時候。 – 2010-09-21 12:39:48