我有被綁定在XAML代碼類變量複選框:WPF如何將複選框雙向鏈接到一個類成員,另一個靜態變量
<CheckBox x:Name="cbxUseBubbleNotifications" Margin="20" IsChecked="{Binding Path=pcdLoggerData.UseBubbleNotifications, Mode=TwoWay}" Content="_Use bubble notifications" HorizontalAlignment="Left" VerticalAlignment="Top" Style="{DynamicResource CheckboxSwitchStyle}" />
這應該被認爲是兩方式結合,但什麼情況是:
- 複選框設置爲選中狀態---->的VAR pcdLoggerData.UseBubbleNotifications是自動確定
- 類被序列化(通過dataContract序列,但我認爲不改變一切) 。
- 我重新啓動程序等等pcdLoggerData.UseBubbleNotifications被自動設置爲true 4複選框未設置爲TRUE < ----- ERROR
4點是不正確的:因爲雙向我期望自動做到這一點。
我的類是:
[DataContract]
public class PCDLoggerBinSerializableData
{
public PCDLoggerBinSerializableData() { }
public PCDLoggerBinSerializableData(string _languageInUse, bool _useBubbleNotifications)
{
LanguageInUse = _languageInUse;
UseBubbleNotifications = _useBubbleNotifications;
}
[DataMember]
public string LanguageInUse { get; set; }
[DataMember]
public bool UseBubbleNotifications { get; set; }
}
}
更重要的是我有根據相同值的pcdLogger.UseBubbleNotifications /變化來設置另一個變量,這是一個靜態無功。 像Bubble.NoBubbles = pcdmisData.UseBubbleNotifications
所以兩個問題:
- 數據綁定不是雙向工作(僅單程)
- 怎麼也數據綁定另一個靜止無功?
感謝
--ADD--
不工作,我把斷點在類的所有部分,他們從來沒有爲它。
這是我做的:
[DataContract]
public class PCDLoggerBinSerializableData: INotifyPropertyChanged
{
#region CONSTRUCTORS
public PCDLoggerBinSerializableData() { }
public PCDLoggerBinSerializableData(string _languageInUse, bool _useBubbleNotifications)
{
LanguageInUse = _languageInUse;
UseBubbleNotifications = _useBubbleNotifications;
}
#endregion
#region OPTIONS
[DataMember]
public string LanguageInUse { get; set; }
[DataMember]
private bool useBubbleNotifications;
public bool UseBubbleNotifications
{
get { return useBubbleNotifications; }
set
{
useBubbleNotifications = value;
Bubble.NoBubblesPlease = !useBubbleNotifications;
OnPropertyChange("UseBubbleNotifications");
}
}
#endregion
#region NOTIFIER
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChange(string inName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("inName"));
}
#endregion
}
對於你的第一個問題,你有沒有嘗試過使用INotifyPropertyChanged?我想你必須這樣做才能讓視圖知道你已經用代碼更新了它。 對於你的第二個問題,你怎麼能有一個複選框綁定到兩個不同的變量?如果這些變量是不同的呢?複選框應該顯示哪個值?如果這些值總是相同的,那麼你可以在UseBubbleNotifications setter屬性的setter中設置第二個值嗎? – ProgrammingDude
不,我不會請你告訴我如何在答案?至於第二個問題? thanx – Patrick
不知道這是否有幫助,但我得到這個錯誤: – Patrick