我有一个ItemsContol绑定到Country模型 - 看起来像这样。
国家
--int Id
--string名称
- 列表县
在ItemsControl的DataTemplate中有一个Listbox - 它绑定到Counties属性。
所以我想要的是任何时候只能选择任何一个列表框中的一个项目。
例如: 我在第一个列表框中选择了一个项目,然后单击第二个列表框中的项目,然后第一个列表框中没有任何选定的项目。
任何想法??
答案 0 :(得分:0)
将SelectedCounty属性添加到Country对象。然后,您可以将SelectedItem
上的ListBox
绑定到该媒体资源。然后在代码中手动将所有其他的设置为null。像这样的东西
Country.OnPropertyChanged += (s,e) =>
{
if(e.PropertyName == "SelectedCounty")
{
foreach(Country country in MyCountries)
if(country != sender)
country.SelectedCounty = null;
}
}
答案 1 :(得分:0)
仅供参考,这是我正在使用的解决方案 - 它位于CountryViewModel
private CountyModel _selectedcounty;
public CountyModel SelectedCounty
{
get { return _selectedcounty; }
set
{
_selectedcounty = value;
RaisePropertyChanged("SelectedCounty");
if (value != null)
{
if (CountySelectedEvent != null)
CountySelectedEvent(value, EventArgs.Empty);
Messenger.Default.Send<CountyModel>(value, "SelectedCounty");
}
}
}
public CountryViewModel()
{
Counties = new ObservableCollection<CountyModel>();
Messenger.Default.Register<CountyModel>(this, "SelectedCounty",
msg =>
{
if(msg != this.SelectedCounty && msg != null)
this.SelectedCounty = null;
});
}
希望它可以帮助某人:)