我有一个列表框,但是如果我点击某个项目,我必须看到该项目的详细信息。我创建了此代码,我尝试将SelectionChanged
事件绑定到属性类型RelayCommand
,模式是双向的。
<ListBox Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3"
SelectedItem="{Binding SelectedVillage, Mode=TwoWay}"
ItemContainerStyle="{StaticResource lstidflt}"
SelectionChanged="{Binding SelectedVillageChanged, Mode=TwoWay}"
ItemTemplate="{StaticResource weatheritemdt}"
ItemsSource="{Binding VillageList}" />
当然,这不起作用,因为您无法将事件绑定到属性或属性到方法,反之亦然。您只能将属性绑定到属性。那么问题是现在是否有将SelectionChanged
事件绑定到属性的替代方法?
我在具有MVVM灯架构的Windows通用10应用程序中使用C#。
答案 0 :(得分:1)
你可以让SelectedItem属性的绑定
<ListBox ItemsSource="{Binding VillageList}" SelectedItem="{Binding SelectedVillage, Mode=TwoWay}" />
在setter中完成工作
public class VillageViewModel
{
public ObservableCollection<Village> VillageList { get; set; }
private Village selectedItem;
public Village SelectedItem
{
get { return selectedItem; }
set
{
if (selectedItem == value)
return;
selectedItem = value;
// Do logic on selection change.
}
}
}
答案 1 :(得分:1)
我所做的(在WPF中)将所选项目绑定到完整属性,然后在设置部分中引发事件。它看起来像这样;
private Village _SelectedVillage;
public Village SelectedVillage{
get {return _SelectedVillage;}
set {
_SelectedVillage = value;
RaiseEvent myEvent();
}
}
您还可以提升relay命令或检查xaml中的触发器。如果您使用该属性,请查看依赖属性,如果它在win 10 universal中可用。