如何将枚举绑定到WPF中的组合框控件? [英] How to bind an enum to a combobox control in WPF?

查看:111
本文介绍了如何将枚举绑定到WPF中的组合框控件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试找到一个简单的示例,其中枚举显示为是。我看到的所有例子都试图添加漂亮的显示字符串,但是我不希望这种复杂性。



基本上我有一个类,它包含我绑定的所有属性,首先将DataContext设置为此类,然后在xaml文件中指定这样的绑定:

 < ComboBox ItemsSource = {Binding Path = EffectStyle}/> 

但是这并不显示 ComboBox 作为项目。

解决方案

您可以通过将代码放在Window Loaded 事件处理程序,例如:

  yourComboBox.ItemsSource = Enum.GetValues(typeof(EffectStyle ))。Cast< EffectStyle>(); 

如果需要在XAML中绑定,需要使用 ObjectDataProvider 创建可用作绑定源的对象:

 < Window x:Class =YourNamespace.MainWindow
xmlns =http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x =http://schemas.microsoft.com/winfx/2006/xaml
xmlns:System =clr-namespace:System; assembly = mscorlib
xmlns:StyleAlias =clr-namespace:Motion.VideoEffects>
< Window.Resources>
< ObjectDataProvider x:Key =dataFromEnumMethodName =GetValues
ObjectType ={x:Type System:Enum}>
< ObjectDataProvider.MethodParameters>
< x:Type TypeName =StyleAlias:EffectStyle/>
< /ObjectDataProvider.MethodParameters>
< / ObjectDataProvider>
< /Window.Resources>
< Grid>
< ComboBox ItemsSource ={Binding Source = {StaticResource dataFromEnum}}
SelectedItem ={Binding Path = CurrentEffectStyle}/>
< / Grid>
< / Window>

提请注意下一个代码:

  xmlns:System =clr-namespace:System; assembly = mscorlib
xmlns:StyleAlias =clr-namespace:Motion.VideoEffects

指导如何映射您可以阅读的命名空间和程序集 MSDN


I am trying to find a simple example where the enums are shown as is. All examples I have seen tries to add nice looking display strings but I don't want that complexity.

Basically I have a class that holds all the properties that I bind, by first setting the DataContext to this class, and then specifying the binding like this in the xaml file:

<ComboBox ItemsSource="{Binding Path=EffectStyle}"/>

But this doesn't show the enum values in the ComboBox as items.

解决方案

You can do it from code by placing the following code in Window Loaded event handler, for example:

yourComboBox.ItemsSource = Enum.GetValues(typeof(EffectStyle)).Cast<EffectStyle>();

If you need to bind it in XAML you need to use ObjectDataProvider to create object available as binding source:

<Window x:Class="YourNamespace.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:System="clr-namespace:System;assembly=mscorlib"
        xmlns:StyleAlias="clr-namespace:Motion.VideoEffects">
    <Window.Resources>
        <ObjectDataProvider x:Key="dataFromEnum" MethodName="GetValues"
                            ObjectType="{x:Type System:Enum}">
            <ObjectDataProvider.MethodParameters>
                <x:Type TypeName="StyleAlias:EffectStyle"/>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>
    <Grid>
        <ComboBox ItemsSource="{Binding Source={StaticResource dataFromEnum}}"
                  SelectedItem="{Binding Path=CurrentEffectStyle}" />
    </Grid>
</Window>

Draw attention on the next code:

xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:StyleAlias="clr-namespace:Motion.VideoEffects"

Guide how to map namespace and assembly you can read on MSDN.

这篇关于如何将枚举绑定到WPF中的组合框控件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆