Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 复选框绑定属性未更改_C#_.net_Wpf - Fatal编程技术网

C# 复选框绑定属性未更改

C# 复选框绑定属性未更改,c#,.net,wpf,C#,.net,Wpf,我有以下代码 Namespace WpfApplication1 { using System.ComponentModel; using System.Runtime.CompilerServices; using WpfApplication1.Annotations; using WpfApplication1.Enums; public class MainWindowViewModel : INotifyPropertyChanged

我有以下代码

Namespace WpfApplication1
{
    using System.ComponentModel;
    using System.Runtime.CompilerServices;

    using WpfApplication1.Annotations;
    using WpfApplication1.Enums;

    public class MainWindowViewModel : INotifyPropertyChanged
    {
        private bool _isItemEnabled;

        public MainWindowViewModel()
        {
            this.IsItemEnabled = false;
        }

        public event PropertyChangedEventHandler PropertyChanged;

        public bool IsItemEnabled
        {
            get
            {
                return this._isItemEnabled;
            }

            set
            {
                this._isItemEnabled = value;
                this.OnPropertyChanged(nameof(this.IsItemEnabled));
            }
        }


        [NotifyPropertyChangedInvocator]
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}



<CheckBox Grid.Row="0" Grid.Column="1" Margin="0,20" 
          IsChecked="{Binding Path = TimeIsEnabled, Mode=OneWay, UpdateSourceTrigger=PropertyChanged }"
          DataContext="{Binding ElementName = MainWindowViewModel}">
    TestIsEnabled
</CheckBox>
命名空间WpfApplication1
{
使用系统组件模型;
使用System.Runtime.CompilerServices;
使用WpfApplication1.注释;
使用WpfApplication1.Enums;
公共类MainWindowViewModel:INotifyPropertyChanged
{
私人楼宇启用;
公共主窗口视图模型()
{
this.IsItemEnabled=false;
}
公共事件属性更改事件处理程序属性更改;
公共布尔值已启用
{
得到
{
返回此项。\u isItemEnabled;
}
设置
{
这是。_isItemEnabled=值;
this.OnPropertyChanged(name of(this.IsItemEnabled));
}
}
[NotifyPropertyChangedInvocator]
受保护的虚拟void OnPropertyChanged([CallerMemberName]字符串propertyName=null)
{
this.PropertyChanged?.Invoke(this,newpropertychangedeventargs(propertyName));
}
}
}
可证明

当我点击复选框时,位于代码隐藏文件上的属性TimeIsEnabled不会改变,它的断点也不会触发。我试图在视图模型中定位此属性,但结果相同。请帮助。

尝试将模式从单向更改为双向(
Mode=TwoWay
)。如果您具有单向绑定,则属性会更新用户界面,但用户界面不会更新属性

    <CheckBox Grid.Row="0" Grid.Column="1" Margin="0,20" 
              IsChecked="{Binding Path = TimeIsEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged }"
              DataContext="{Binding ElementName = MainWindowViewModel}">
        TestIsEnabled
    </CheckBox>

您的
MainWindowViewModel
课程很好。我尝试了这个例子,效果很好。

尝试将模式从单向更改为双向(
Mode=TwoWay
)。如果您具有单向绑定,则属性会更新用户界面,但用户界面不会更新属性

    <CheckBox Grid.Row="0" Grid.Column="1" Margin="0,20" 
              IsChecked="{Binding Path = TimeIsEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged }"
              DataContext="{Binding ElementName = MainWindowViewModel}">
        TestIsEnabled
    </CheckBox>

您的
MainWindowViewModel
课程很好。我尝试了此示例,但效果良好。

问题出在DataContext中,但我在输出窗口System.Windows中仍然遇到错误。数据错误:40:BindingExpression路径错误:“在对象”“字符串”(HashCode=2067111156)上未找到TimeIsEnabled”属性。BindingExpression:Path=TimeIsEnabled;DataItem='String'(HashCode=2067111156);目标元素为“复选框”(名称=“”);目标属性为“IsChecked”(类型为“Nullable`1”),您是否在定义TimeIsEnabled属性的类中实现了INotifyPropertyChanged接口。也许这个链接会对你的问题有所帮助:关于你的错误,也许你可以在这个链接上找到一个解决方案:事实上,这是一个带有一个xaml文件和视图模型的测试应用程序,其中包含一个属性。问题出在DataContext中,但我仍然在Output window System.Windows中遇到错误。数据错误:40:BindingExpression路径错误:在“对象”“字符串”(HashCode=2067111156)上未找到“TimeIsEnabled”属性。BindingExpression:Path=TimeIsEnabled;DataItem='String'(HashCode=2067111156);目标元素为“复选框”(名称=“”);目标属性为“IsChecked”(类型为“Nullable`1”),您是否在定义TimeIsEnabled属性的类中实现了INotifyPropertyChanged接口。也许这个链接会对您的问题有所帮助:关于您的错误,也许您可以在这个链接中找到解决方案:事实上,这是一个测试应用程序,它有一个xaml文件和包含一个属性的视图模型