如果我有两个对象,一个是项目列表,另一个具有存储另一个列表中所选项目的属性,是否可以通过WPF中的绑定更新所选项目?
假设我有这两种数据结构:
public class MyDataList
{
public ObservableCollection<Guid> Data { get; set; }
}
public class MyDataStructure
{
public Guid ChosenItem { get; set; }
}
是否可以将Listbox绑定到两个对象的实例,以便ChosenItem属性由ListBox的选定项设置?
编辑:为了使事情更清楚一点,可能会有许多MyDataStructure实例,每个实例都有一个来自MyDataList的选定项目。数据列表对所有实例都是通用的,我需要一种方法来选择一个项目并将该选择存储在MyDataStructure中。
答案 0 :(得分:2)
我相信你应该能够做到这一点(确保声明本地命名空间):
<Window.Resources>
<local:MyDataStructure x:Key="mds1" />
</Window.Resources>
<ListBox ItemsSource="{Binding Data}" SelectedValue="{Binding Source={StaticResource mds1} Path=ChosenItem}"/>
答案 1 :(得分:1)
在单个类中创建这两个属性(只是为了简化解决方案)并使代码为属性更改事件做好准备
public class MyDataList : INotifyPropertyChanged
{
private Guid _choosen;
public ObservableCollection<Guid> Data { get; set; }
public Guid ChosenItem {
get
{
return _choosen;
}
set
{
_choosen = value;
PropertyChanged(this, new PropertyChangedEventArgs("ChosenItem"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
创建此类的实例并绑定到ListBox的DataContext 现在编写ListBox XAML代码如下所示。 SelectedValue绑定正在这里诀窍。
<ListBox ItemsSource="{Binding Data}" SelectedValue="{Binding Path=ChosenItem}" x:Name="listBox"/>