我正在使用MVVM模式,并在运行我的应用程序时收到以下内容
出现InvalidOperationException TwoWay或OneWayToSource绑定无法对“ViewModel.SynergyViewModel”类型的只读属性“选项”起作用。
我在我的视图模型中评论了我的所有源代码,并将其追溯到一个复选框。如果我注释掉我的视图模型中的复选框或正确性,应用程序运行,减去功能。下面我列出了我的复选框的代码和viewmodel中的属性。
<CheckBox Grid.Column="4" HorizontalAlignment="Right" Margin="5,0,5,5" IsChecked="{Binding Options}" Content="Options"/>
private bool _Options;
public bool Options
{
get
{
return _Options;
}
private set
{
if (_Options == value)
return;
_Options = value;
OnPropertyChanged("Options");
}
}
发生了System.InvalidOperationException Message = TwoWay或OneWayToSource绑定不能对“ViewModel.MyViewModel”类型的只读属性“Options”起作用。 来源= PresentationFramework 堆栈跟踪: 在MS.Internal.Data.PropertyPathWorker.CheckReadOnly(对象项,对象信息) InnerException:
关于我在这里缺少什么的任何想法?
答案 0 :(得分:22)
将您的setter设为公开或明确将Binding.Mode
设置为OneWay
。
答案 1 :(得分:1)
你的setter是私有的,要么将绑定指定为模式OneWay,要么从setter中删除私有
答案 2 :(得分:0)
在我绝对愚蠢的情况下,我忘了为属性定义一个setter,使其成为只读。对于那些工作太晚的人来说,只有我的2美分。
答案 3 :(得分:0)
对于那些不使用PropertyChanged
无论是否使用PropertyChanged
,当您具有计算所得的属性(无设置器)并且用户尝试编辑该列时,也会引发此异常。这样,将整个DataGrid设置为IsReadOnly="True"
或仅将列设置为ReadOnly就足够了。