gpt4 book ai didi

c# - WPF 列表框绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 22:23:48 24 4
gpt4 key购买 nike

我有一个医生对象,它的属性之一是 ObservableList的诊所。它被用在一个窗口中以显示医生的详细信息。我可以将单个属性绑定(bind)到 TextBoxComboBox控制,但我无法获得要绑定(bind)到我的 ListBox 的诊所列表.

这是我的 ListBox 的 xaml :

<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 中的项目,该列表是所有可能的诊所的列表。但是,我无法从医生对象中获取诊所列表以进行绑定(bind),以便在列表框中选择它的项目。我也想另辟蹊径,如果取消选择某个项目,医生对象中的 ObservableList 将相应更改。

如何将我的医生对象中的 ObservableList of Clinics 双向绑定(bind)到我的 Listbox 中的 Clinics 列表(诊所对象的 ObservableList)?

谢谢你。

最佳答案

迈克,你的绑定(bind)没有什么问题。
这是一个完整的示例,展示了一种做(我认为)你所追求的方法。

看法:

<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; }
}

请注意,对于读/写属性,您可能希望引发属性更改通知。

关于c# - WPF 列表框绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9368506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com