如何将绑定到枚举的ComboBox的初始SelectedItem设置为包含该枚举的对象的值?

时间:2016-12-14 19:15:58

标签: c# wpf data-binding combobox enums

我目前有一个存在于ListView中的ComboBox。 ComboBox的ItemSource绑定到StaticResource Enum,它使用我想要提供给用户的枚举值填充ComboBox。 ListView本身绑定到一个Observable对象集合,它具有与我试图呈现的枚举相关联的属性。大部分都是有效的。

ComboBox正在显示并展示Enum中的值。甚至Starts填充了我创建的Enum中的第一个项目。但是,我试图让它显示Listview所呈现的Object的实际Enum值,它目前没有这样做。我相信我正在设置我的SelectedValue和SelectedValuePaths的问题,但我无法弄清楚确切的问题。

这是我现在用于ComboBox的XAML。

<DataTemplate>
  <ComboBox ItemSource={Binding Source={StaticResource dataFromStatusesEnum}}
   SelectedValue="{Binding JMessage3, Mode=TwoWay"}"
   SelectedValuePath="Statuses.Status"
  </ComboBox>
</DataTemplate>

这是我正在填充ListView绑定的ObservableCollection的类。

public class Entity
{
    public string Name {get; set;}
    public Statuses Status {get; set;}
    Public Entity()
    {
        this.Name = "Test";
        this.Status = Statuses.Disabled;
    }
}

这是Enum我现在正在绑定ComboBox ItemSource。

public enum Statuses
{
    Enabled,
    Disabled,
    Deleted
}

据我了解我创建的XAML,ListBox正确绑定到ItemSource并显示我期望的信息。

ComboBox正确绑定到Enum并将DropDown中的那些显示为ComboBox的选项。

我认为SelectedValuePath应该是实体类本身的Status属性,我认为SelectedValue应该是我想要设置的枚举,但显然我在这个假设中是错的。

编辑:想要补充一点,目前这还没有使用MVVM模式。我正在努力实现的目标,但尚未实施。

1 个答案:

答案 0 :(得分:0)

有这个工作。 SelectedValue应该已设置为Entity的Status属性,并且SelectedValuePath不必设置为任何内容。我不完全确定为什么,但它正在发挥作用。