C# 避免双向数据绑定到集合时不必要的set访问器

C# 避免双向数据绑定到集合时不必要的set访问器,c#,wpf,data-binding,C#,Wpf,Data Binding,我将数据网格绑定到ObservableCollection,如下所示: <DataGrid ItemsSource="{Binding Path=MyCollection, Mode=TwoWay}"> viewmodel中的属性如下所示: public ObservableCollection<MyType> MyCollection { get { return this.Model.Collection; } set { /* Empty bu

我将数据网格绑定到ObservableCollection,如下所示:

<DataGrid ItemsSource="{Binding Path=MyCollection, Mode=TwoWay}">

viewmodel中的属性如下所示:

public ObservableCollection<MyType> MyCollection
{
    get { return this.Model.Collection; }
    set { /* Empty but needed for data binding */ }
}
public observeablecollection MyCollection
{
获取{返回this.Model.Collection;}
将{/*设置为空,但数据绑定需要*/}
}

MyCollection
的set访问器从未被调用或使用,而是双向数据绑定所必需的。所包含的模型类在构造时初始化集合,因为将对象置于有效状态是必需的。是否有任何方法可以绕过这个不必要的访问器,或者有任何替代方法吗?

如果双向绑定是双向使用的,那么它就是被使用的,而不是由您在代码中显式使用的。据我所知,你不能逃避申报。与声明任何读写属性相同。不管出于什么原因,你都必须把它们写下来

Public Type Property
{
    get;
    set;
}

MS不想让你觉得太容易。=)

设置Mode=OneWay,您不需要设置。

OneWay与Getter有关,OneWayToSource是Setter。当然,TwoWay关注的是Getter和Setter


从这个角度来看,如何在视图中更改DataGrid的ItemsSource,比如TextBox的文本?我认为这是不可能的,所以您不需要设置双向绑定。更改为单向并删除setter。

如果绑定为双向则需要一个
set
访问器。如果您不需要访问器,那么绑定应该是单向的。您希望如何声明读写属性?我发现这是迄今为止我见过的最简单的方法。我没有反对它。我喜欢你不需要声明一个底层变量,如果你不想的话,比如VB。