我有一个组合框,它包含类别对象。
<ComboBox Name="cbxCategory" Grid.Row="0" Grid.Column="1" FontSize="14" SelectedValue="{Binding Category, Mode=TwoWay}" Style="{StaticResource RegularControlStyles}">
<ComboBox.ItemTemplate>
<DataTemplate>
<ComboBoxItem Content="{Binding CategoryName}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我有DataContext:
public class EventFilter
{
public int CategoryId { get; set; }
public int SubCategoryId { get; set; }
public DateTime StartDate { get; set; }
public int? Duration { get; set; }
public string Address { get; set; }
}
除了两个组合框(Category和SubCategory)之外,所有字段都绑定得很好。
问题是组合框保存了一个Category对象,而EventFilter保存了它的id。我能做的一个解决方案就是改变属性:
public int CategoryId { get; set; }
到:
public int Category { get; set; }
但我不想那样做,我想保留身份证。 那我该怎么办?
我应该使用转换器吗? 如果我将组合框的绑定更改为:
SelectedValue="{Binding CategoryId, Mode=TwoWay}"
它不能正常工作,因为它包含类别。
有人可以帮助我吗?
非常感谢。
答案 0 :(得分:0)
您需要将SelectedValuePath
的{{1}}属性设置为您的媒体资源的名称...在这种情况下,我猜您在{{{}}上有一个名为'Id'的媒体资源{1}}课程。然后,ComboBox
属性将提供所选Category
对象的“Id”属性值。
您可以在MSDN的Selector.SelectedValuePath Property页面上找到更多信息。
您可能需要或者还需要设置SelectedValue
属性...这将定义所选Category
对象的哪个属性将显示在控件中。
您可以在MSDN的ItemsControl.DisplayMemberPath Property页面上找到更多信息。
DisplayMemberPath
请注意,您需要将Category
的{{1}}属性绑定到当前<ComboBox Name="cbxCategory" Grid.Row="0" Grid.Column="1" FontSize="14"
SelectedValuePath="CategoryId" SelectedValue="{Binding EventFilterItems.CategoryId}"
DisplayMemberPath="CategoryName" Style="{StaticResource RegularControlStyles}" />
对象的SelectedValue
属性。