我有一个医生对象,它的属性之一是ObservableList
的诊所。它被用在一个窗口中来显示医生的详细信息。我可以获取要绑定的各个属性TextBox
and ComboBox
控件,但我无法获取要绑定到我的诊所列表ListBox
.
这是我的 xamlListBox
:
<ListBox Height="318"
HorizontalAlignment="Left"
Margin="422,0,0,0"
Name="lbClinic"
VerticalAlignment="Top"
Width="158"
SelectedValue="{Binding ClinicID, Path=Clinics, Mode=TwoWay,
UpdateSourceTrigger = PropertyChanged}"
SelectedValuePath="ClinicID"
DisplayMemberPath="Name"
ItemsSource="{Binding DataContext.ClinicList,
ElementName = PhysicianInfoLookup, Mode = OneWay}"
SelectionMode="Multiple" />
列表框正确填充了 ClinicList 中的项目,ClinicList 是所有可能的诊所的列表。但是,我无法从要绑定的医生对象获取诊所列表,以便在列表框中选择它的项目。我还想走另一种方式,如果取消选择某个项目,医生对象中的 ObservableList 将相应更改。
如何将医生对象中的诊所 ObservableList 双向绑定到列表框中的诊所列表(诊所对象的 ObservableList)?
谢谢。
迈克,你的绑定几乎没有问题。
这是一个完整的示例,演示了执行(我认为)您所追求的操作的一种方法。
View:
<Page.Resources>
<ViewModel:Physician x:Key="physician"/>
</Page.Resources>
<StackPanel DataContext="{StaticResource physician}" >
<TextBlock Text="{Binding Name}" Background="Orange"/>
<TextBlock Text="Works in:"/>
<ListBox ItemsSource="{Binding Clinics}"
SelectedValue="{Binding SelectedClinicId}"
SelectedValuePath="Id" DisplayMemberPath="Name" />
</StackPanel>
查看型号:
public class Physician
{
private int _selectedClinicId;
public Physician()
{
Name = "Overpaid consultant";
Clinics = new ObservableCollection<Clinic>
{
new Clinic {Id = 0, Name = "Out Patients"},
new Clinic {Id = 1, Name = "ENT"},
new Clinic {Id = 2, Name = "GE"},
};
}
public string Name { get; set; }
public IEnumerable<Clinic> Clinics { get; private set; }
public int SelectedClinicId
{
get { return _selectedClinicId; }
set
{
if (value != _selectedClinicId)
{
Debug.WriteLine(string.Format("setting clinic to: {0}",value));
_selectedClinicId = value;
}
}
}
}
public class Clinic
{
public int Id { get; set; }
public string Name { get; set; }
}
请注意,对于读/写属性,您可能希望引发属性更改通知。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)