将枚举绑定到组合框并绑定到属性

时间:2015-01-30 14:14:56

标签: wpf xaml binding enums

我使用以下内容成功将以下枚举传递给了Combobox:

public enum Color
{
    Blue,
    Green,
    Yellow
}

public Color _color { get; set; }
public Type Colors
{
    get { return typeof(Color); }
}

在视图中我有以下内容:

<ComboBox ItemsSource="{Binding Colors, Converter={StaticResource enumConverter}}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <TextBlock Text="{Binding }" FontSize="14"/>
            </Grid>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

这让我可以在框中拍摄颜色。我想要做的是将所选颜色绑定到我的viewmodel的一部分属性。我对转换器很新,所以我可能会遗漏一些东西。

2 个答案:

答案 0 :(得分:0)

您可以将SelectedItem的{​​{1}}绑定到视图模型中的属性。该属性的类型必须与ComboBox生成的项的类型匹配。

答案 1 :(得分:0)

您可以将Combobox的SelectedItem绑定到该媒体资源。我在ViewModel中将属性重命名为SelectedColorPropertyChanged事件在setter中引发,因此当您更新属性时,例如,从ViewModel中的另一个方法更新属性时,将通知视图并使用新值更新。

private Color _selectedColor;

public Color SelectedColor 
{
    get { return _selectedColor; }
    set
    {
        _selectedColor = value;
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs("SelectedColor"));
        }
    }
}

在XAML中

<ComboBox ItemsSource="{Binding Colors, Converter={StaticResource enumConverter}}" 
    SelectedItem="{Binding SelectedColor}">
    ...