我将一个pivot itemsSource设置为我的ViewModel中的OservableCollection属性。当我单击一个按钮时,我希望将枢轴ItemSource绑定到ObservableCollection类型的VM中的另一个属性。在页面的Xaml中,我设置了Pivots的ItemsSource一次,我知道从按钮点击事件的代码隐藏更改它不是一个好方法,而只是改变集合的内容。问题是Type1是Type1而另一个是Type2。如何在ViewModel中执行此操作?
答案 0 :(得分:0)
在您的viewmodel中,您可以将list属性定义为Object并绑定到该属性,然后在您的命令中切换集合,只需将该对象设置为其他列表。
这是一个简短的例子
private Object _list;
private ObservableCollection<Int32> _intList;
private ObservableCollection<String> _stringList;
public Object List
{
get { return _list; }
set
{
_list = value;
RaisePropertyChanged("List");
}
}
public void CommandExecuted()
{
if (ReferenceEquals(_list, _intList))
{
List = _stringList;
}
else
{
List = _intList;
}
}
答案 1 :(得分:-1)
如果将绑定的Item保留为IEnumerable,则应该能够切换集合并通知交换机。 private IEnumerable _boundList; private ObservableCollection _firstCollection; private ObservableCollection _SecondCollection;
public IEnumerable BoundList
{
get { return _boundList; }
set
{
_boundList = value;
OnPropertyChanged("BoundList");
}
}
public void CommandExecuted()
{
BoundList = _boundList == _firstCollection ? (IEnumerable)_SecondCollection : _firstCollection;
}