【发布时间】:2021-05-26 18:51:55
【问题描述】:
这个问题可能很愚蠢,但我是 WPF 的新手,所以我很抱歉。 我在这里发现了很多类似的问题,但都没有帮助。
我有一个表单,它获取一些带有Location 属性的对象作为输入。
我希望在显示表单时在ComboBox 中选择此Location 属性。
我还想让这个属性在表单的生命周期中可变。
我是这样绑定的:
<ComboBox Name="CB_Location" ItemsSource="{Binding Locations}" SelectedItem="{Binding SelectedLocation}" DisplayMemberPath="LocationName" SelectedValuePath="LocationID" SelectionChanged="CB_Location_SelectionChanged"/>
public class Location
{
public int LocationID { get; set; }
public string LocationName { get; set; }
}
public Form(object _obj)
{
InitializeComponent();
lctrl = new LocationController();
Locations = lctrl.GetAllLocations();
SelectedLocation = lctrl.GetLocationById(_obj.LocationID);
DataContext = this;
}
public List<Location> Locations { get; set; }
public Location SelectedLocation; { get; set; }
ComboBox 已正确填充对象,但我无法正确设置 SelectedItem 属性。
【问题讨论】:
-
为什么不使用SelectedValue设置SelectedValuePath?什么是选定位置?如果它是当前 DataContext 中 Location 类型的属性,请确保它的值是 Location 对象,它是 Locations 集合的成员。否则转成
int类型的属性,绑定SelectedValue而不是SelectedItem,设置成SelectedLocation = _obj.LocationID; -
是的,SelectedLocation 是 Location 类型的属性。 Locations 集合包含所有可能的位置,包括 SelectedLocation。
-
public Location SelectedLocation;是一个字段,而不是一个属性。 -
@Clemens 修复了这个问题。谢谢你。但是还是不行。
标签: c# .net wpf xaml data-binding