首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WPF中枚举System.IO.Ports.Parity的ComboBox

WPF中枚举System.IO.Ports.Parity的ComboBox
EN

Stack Overflow用户
提问于 2013-02-21 04:15:29
回答 2查看 2K关注 0票数 0

我希望(在C#中)用枚举System.IO.Ports.Parity的允许值填充组合框的允许值列表。为此,我创建了一个集合:

代码语言:javascript
复制
public class theParitySource : ObservableCollection<Parity>
{
    public theParitySource()
    {            
        Array parities = System.Enum.GetValues( typeof( Parity ) );
        foreach (Parity p in parities) this.Add(p);            
    }
}

(顺便说一句:这个初始化有没有一个内联程序?)并将其作为combobox的datacontext:

代码语言:javascript
复制
  ...
  xmlns:local="clr-namespace:myNamespace"
  ...

  <ComboBox ...>
      <ComboBox.DataContext>
          <local:theParitySource />
      </ComboBox.DataContext>
  </ComboBox>

然而,组合框仍然是空的(它显示为空,但似乎具有正确的长度),即使我可以在调试器中看到theParitySource是如何填充的。这种方法在另一个组合框中(即使在同一个类中)也有效,在那里我对波特率执行此操作。我是用整数值初始化的,所以我猜这与我在这里使用枚举的事实有某种关系,但我不知道原因是什么。有什么建议吗?我需要写一个转换器吗?

(当然,我可以通过从枚举创建一个字符串列表来解决这个问题,但这会让人有点不愉快……)

编辑:实际上,我更喜欢用XAML完成所有这些工作。有没有简单的方法可以做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-21 04:22:47

您可以使用ObjectDataProviderXaml中完成所有这些操作

在您的Window.Resources (或您正在使用的任何资源)中设置一个ObjectDataProvider

要为Enums设置ObjectDataProvider,请将ObjectType设置为{x:Type sys:Enum},将MethodName设置为GetValues,以便用实际的Enums填充ComboBox,或者可以使用GetNamesEnum的字符串填充ComboBox

代码语言:javascript
复制
   xmlns:sys="clr-namespace:System;assembly=mscorlib"
   xmlns:io="clr-namespace:System.IO.Ports;assembly=System"

   <Window.Resources>

        <ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="ParityValues">
            <ObjectDataProvider.MethodParameters>
                <x:Type TypeName="io:Parity" />
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>

    </Window.Resources>

然后绑定到你的ComboBox

代码语言:javascript
复制
 <ComboBox ItemsSource="{Binding Source={StaticResource ParityValues}}" />

结果:

票数 6
EN

Stack Overflow用户

发布于 2013-02-21 04:20:35

你需要绑定到一个正确的路径,你可能正在设置它的数据上下文,但是你没有告诉它要显示的属性。

你需要告诉它你想要显示的绑定上下文的哪一部分,以及你想要被“选中”的那一部分。

WPF Combobox DisplayMemberPath

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14989074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档