c# – WPF Listbox绑定
发布时间:2020-12-16 00:02:57 所属栏目:百科 来源:网络整理
导读:我有一个医生对象,其中一个属性是一个Observable诊所列表.它被用在窗口中以显示医生的详细信息.我可以获得绑定到TextBox和ComboBox控件的单个属性,但是我无法获取要绑定到ListBox的诊所列表. 这是我的ListBox的xaml: ListBox Height="318" HorizontalAlignm
我有一个医生对象,其中一个属性是一个Observable诊所列表.它被用在窗口中以显示医生的详细信息.我可以获得绑定到TextBox和ComboBox控件的单个属性,但是我无法获取要绑定到ListBox的诊所列表.
这是我的ListBox的xaml: <ListBox Height="318" HorizontalAlignment="Left" Margin="422,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 of Clinics双向绑定到我的Listbox中的Clinics列表(诊所对象的ObservableList)? 谢谢. 解决方法
迈克,绑定问题很少.
这是一个完整的样本,展示了一种做(我认为)你所追求的方法. 视图: <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; } } 请注意,对于读/写属性,您可能希望引发属性更改通知. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |