WPF 如何将复选框双向链接到类成员和另一个静态变量

本文关键字:成员 另一个 变量 静态 链接 复选框 WPF | 更新日期: 2023-09-27 18:30:19

我有一个复选框,它绑定到 xaml 代码中的类变量:

 <CheckBox x:Name="cbxUseBubbleNotifications" Margin="20" IsChecked="{Binding Path=pcdLoggerData.UseBubbleNotifications, Mode=TwoWay}"  Content="_Use bubble notifications"  HorizontalAlignment="Left"  VerticalAlignment="Top" Style="{DynamicResource CheckboxSwitchStyle}" />

这应该应该是双向绑定,但发生的情况是:

  1. 复选框设置为 CHECKED ----> var pcdLoggerData.UseBubbleNotifications 自动确定
  2. 该类被序列化(通过数据合约序列化,但我认为这不会改变任何东西)。
  3. 我重新启动程序,因此pcdLoggerData.UseBubbleNotifications自动设置为true4 复选框未设置为 TRUE <-----错误

第 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

所以有两个问题:

  1. 数据绑定不是双向工作(只有单向)
  2. 如何数据绑定另一个静态变量?

谢谢

--加--

不工作,我在类的所有部分都放置了断点,但它们从来没有。

我是这样做的:

 [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
  }

WPF 如何将复选框双向链接到类成员和另一个静态变量

它会像这样:

public bool UseBubbleNotifications
{
 get
 {
    return useBubbleNotifications;
 }
 set
 {
    useBubbleNotifications = value;
    Other_Static_Variable = value;
    OnPropertyChange("UseBubbleNotifications");
 }
}
public void OnPropertyChange(string inName)
{
    if(PropertyChanged != null)
      {
         PropertyChanged(this, new PropertyChangedEventArgs("inName"));
      }
}

这样的事情可能会起作用。当然,您的类必须继承 INotifyPropertyChanged 接口。