【问题标题】:Checkbox value in wpf treeview is not equal to value of bound propertywpf treeview中的复选框值不等于绑定属性的值
【发布时间】:2015-10-20 19:38:47
【问题描述】:

我有一个 wpf 格式的 treeview,最初绑定正确,但树中 checking and unchecking 项目的某些组合导致 binding 无法保存。

这里是房产;

const string HAS_ACCESS = "HasAccess";

 public bool? HasAccess
 {
    get
      {
         return hasAccess;
      }
    set
      {
         if (hasAccess == value) return;
           if(!AllowUpdate(value)) return;
              //Debug.WriteLine("{0}  tried to set hasAccess to a value of {1} D = {2}, A = {3}, u = {4}, AllowChange = {5}, I = {6}", myPermission.Name, value, descendantChanged, ancestorChanged, userInstigatedChange, AllowUpdate(value), isInitialising);
            ResetChangeBools();
            hasAccess = value;
            Debug.WriteLine("HasAccess = {0}", HasAccess);
            isInitialising = false;
            RaisePropertyChanged(HAS_ACCESS);
      }
   }

这是xaml;

   <CheckBox Grid.Column="0" Grid.Row="1"
             IsThreeState="true"
             Content="{Binding MyPermission.Name}"
             Click="CheckBox_Clicked"
             IsChecked="{Binding HasAccess, Mode=OneWay}"/>

我必须强调,HasAccess 的正确值在 treeviewinitialised 时显示,并且在大多数情况下都会更新,但如果我检查 treeview 中的子项(正确检查它的父元素),uncheck 它的父元素(正确地取消选中它的子元素)然后重新检查父元素不再检查的初始子元素。我包含了 Debug.writeline 以检查是否正确设置了值,尽管我可以在“输出”窗口中看到正确的值,但它们未显示在复选框中。任何帮助将不胜感激。

【问题讨论】:

    标签: c# wpf checkbox treeview


    【解决方案1】:

    将绑定模式更改为 TwoWay Mode=TwoWay

    【讨论】:

    • 我尝试了这个,但没有成功,问题是我的视图模型中的值没有在控件中设置。单程应该可以显示这个。
    • @monkeyTrainer ,你有没有尝试一个简单的例子。我的意思是从设置器中删除您的业务逻辑(只需执行 hasAccess = value 并引发您的属性更改事件)并在您的 VM 构造函数中初始化此 HasAccess 属性以查看绑定是否正常
    【解决方案2】:

    我发现问题 Med.Amine.Touil 几乎就在那里。复选框有一个错误。当绑定模式设置为 OneWay 时,它失去了绑定,但我无法进行绑定 TwoWay,因为我不希望更改值来直接更改底层 dataContext。通过绑定 TwoWay 和 UpdateSourceTrigger = Explicit,我得到了我想要的行为。

    IsChecked="{Binding HasAccess, Mode=TwoWay, UpdateSourceTrigger=Explicit}
    

    【讨论】:

      猜你喜欢
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 2014-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      相关资源
      最近更新 更多