我有一个ObservableCollection<List<MessageView>>
(MessageView是一个自定义类)我以这种方式实例化
public ObservableCollection<List<MessageView>> _messagesView;
public ObservableCollection<List<MessageView>> messagesView {
get {
if (_messagesView == null) {
_messagesView = new ObservableCollection<List<MessageView>>();
}
return _messagesView;
}
set {
if (_messagesView != value) {
_messagesView = value;
PropertyChanged(this, new PropertyChangedEventArgs(nameof(messagesView)));
}
}
}
此属性在Singleton
上设置我想将一个项集合绑定到一个数据网格,它会在xaml中看起来那样:
<xmlns:module="clr-namespace:Myproject.MyNameSpace;assembly=Myproject">
<DataGrid
Name="DataGrid_messages"
...
ItemsSource="{Binding messagesView[2], Source={x:Static module:Singleton.Instance}}"
>
这样做很好但这不是我想做的。我希望控制我的索引。所以我必须在c#中使用我的控制器进行绑定,但是我从未找到过与特殊索引绑定的示例。
Binding myBinding = new Binding("messagesView");
myBinding.Source = Singleton.Instance;
myBinding.Path = ??
DataGrid_messages.SetBinding(DataGrid.ItemsSourceProperty, myBinding);
分享你对此的想法,有可能吗?或者更好的方法呢?
更新
与Clemens答案的其他改动:
使用内部列表设置绑定,因此它应该是ObservableCollection类型:
public List<ObservableCollection<MessageView>> messagesView;
答案 0 :(得分:2)
如果索引是固定的,在后面的代码中创建绑定路径可能如下所示:
myBinding.Path = new PropertyPath(string.Format("messagesView[{0}]", index));