如何通过 ObjectDataProvider 将 ComboBox 绑定到通用字典

     2023-04-12     46

关键词:

【中文标题】如何通过 ObjectDataProvider 将 ComboBox 绑定到通用字典【英文标题】:How to bind a ComboBox to generic dictionary via ObjectDataProvider 【发布时间】:2010-12-09 00:23:37 【问题描述】:

我想在后面的代码中用键/值数据填充 ComboBox,我有这个:

XAML:

<Window x:Class="TestCombo234.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:TestCombo234"
    Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <ObjectDataProvider x:Key="Choices" ObjectType="x:Type local:CollectionData" MethodName="GetChoices"/>
    </Window.Resources>
    <StackPanel HorizontalAlignment="Left">
        <ComboBox ItemsSource="Binding Source=StaticResource Choices"/>
    </StackPanel>
</Window>

代码隐藏:

using System.Windows;
using System.Collections.Generic;

namespace TestCombo234

    public partial class Window1 : Window
    
        public Window1()
        
            InitializeComponent();
        
    

    public static class CollectionData
    
        public static Dictionary<int, string> GetChoices()
        
            Dictionary<int, string> choices = new Dictionary<int, string>();
            choices.Add(1, "monthly");
            choices.Add(2, "quarterly");
            choices.Add(3, "biannually");
            choices.Add(4, "yearly");
            return choices;
        
    

我必须改变什么,以便键是 int,值是字符串?

【问题讨论】:

谷歌揭示了这一点:social.msdn.microsoft.com/Forums/en-US/wpf/thread/… 看起来您上面问题中的图像已损坏(现在是showing an ad instead)。您能否将图像重新上传到 stack.imgur,或编辑您的问题以将其删除? 【参考方案1】:

到你的组合框添加

SelectedValuePath="Key" DisplayMemberPath="Value"

【讨论】:

我认为您的意思是 SelectedValuePath 和 DisplayMemberPath,它们至少对我有用,谢谢。 糟糕,是的,我做到了。我会修复答案。 另外,SelectedValue="Binding myViewModelProperty"如果想得到用户的选择,也可以加上。【参考方案2】:

有一个更简单的方法。

将枚举转换为 Generic.Dictionary 对象。例如,假设您想要一个带有工作日的组合框(只需将 VB 转换为 C#)

Dim colWeekdays As New Generic.Dictionary(Of FirstDayOfWeek, String)
    For intWeekday As FirstDayOfWeek = vbSunday To vbSaturday
       colWeekdays.Add(intWeekday, WeekdayName(intWeekday))
    Next

RadComboBox_Weekdays.ItemsSource = colWeekdays

在您的 XAML 中,您只需设置以下内容即可绑定到对象:

SelectedValue="Binding Path= StartDayNumberOfWeeek"  SelectedValuePath="Key" 
DisplayMemberPath="Value" />

上面的代码可以很容易地使用反射来处理任何枚举。

希望对你有帮助

【讨论】:

【参考方案3】:

DevExpress 17.1.7 处理这个问题的方式是设置这些属性:DisplayMemberValueMember,如果是字典,它会是这样的:

DisplayMember="Value" 
ValueMember="Key"

【讨论】:

wpf数据绑定

 CollectionViewSource:可用于排序,但是他需要ObjectDataProvider作为数据源:ollectionViewSource做为排序的数据源,首先将CollectionViewSource的Source属性设置为ObjectDataProvider的资源名称。然后通过设置CollectionViewSource.SortDescriptions属性,指... 查看详情

objectdataprovider

<Window.Resources><ObjectDataProviderx:Key="personList"ObjectType="{x:Typemodels:Person}"><ObjectDataProvider.MethodParameters><models:Person><models:Person.Name>吴南</m 查看详情

wpf中使用objectdataprovider绑定方法

原文:WPF中使用ObjectDataProvider绑定方法  ObjectDataProvider提供了绑定任意.net类型的功能,具体功能如下:1.ObjectDataProvider提供了绑定任意CLR类型的公嫩那个。2.它可以再XAML中利用生命史的语言以及参数化的构造函数完成对数... 查看详情

刷新 ObjectDataProvider 时视图丢失

】刷新ObjectDataProvider时视图丢失【英文标题】:ViewlostwhenrefreshingObjectDataProvider【发布时间】:2008-12-2107:43:13【问题描述】:我正在根据JoshSmith在http://joshsmithonwpf.wordpress.com/2007/06/12/searching-for-items-in-a-listbox的示例在列表上实现文... 查看详情

wpf中使用objectdataprovider绑定方法

ObjectDataProvider提供了绑定任意.net类型的功能,具体功能如下: 1.ObjectDataProvider提供了绑定任意CLR类型的公嫩那个。 2.它可以再XAML中利用生命史的语言以及参数化的构造函数完成对数据的创建 3.增加对成员函数的绑定&... 查看详情

<ObjectDataProvider.MethodParameters> 和 xmlns:local

】<ObjectDataProvider.MethodParameters>和xmlns:local【英文标题】:<ObjectDataProvider.MethodParameters>andxmlns:local【发布时间】:2020-03-1117:16:15【问题描述】:问题很简单:有一个命名空间xmlns:local="clr-namespace:Notify"。有一个类“... 查看详情

WPF 将 ListBox 绑定到枚举,显示描述属性

...发布时间】:2011-04-2812:06:15【问题描述】:是否可以使用ObjectDataProvider方法将ListBox绑定到枚举,并以某种方式设置其样式以显示Description属性?如果是这样,人们将如何去做...?【问题讨论】:***.c 查看详情

wpfobjectdataprovider(代码片段)

原文:WPFObjectDataProvider这个ObjectDataProvider东西真的是个神奇的存在。等同于反射。只不过是写在xaml中。 例如说我要把colors中所有的颜色列举出来。普通方法://CB是comboboxthis.CB.ItemsSource=typeof(Colors).GetProperties(); 使用objectdata... 查看详情

enumbindingitemssourceinwpf

原文:EnumBindingItemsSourceInWPF在WPF中枚举绑定到ItemsSource。一、通过ObjectDataProvider获取Enum数据源首先我们定义一个Enum类:publicenumTableSelectedTypeSelectedOne,SelectedTwo,SelectedThird接着在Xaml中的Resource里定义数据源。我们这里写好了一个Enum 查看详情

enumbindingitemssourceinwpf

在WPF中枚举绑定到ItemsSource。一、通过ObjectDataProvider获取Enum数据源首先我们定义一个Enum类:publicenumTableSelectedType{SelectedOne, SelectedTwo, SelectedThird}接着在Xaml中的Resource里定义数据源。<UserControl.Resources>&l 查看详情

wpf入门教程系列十八——wpf中的数据绑定

...行排序,可以绑定到CollectionViewSource,而不是直接绑定到ObjectDataProvider。CollectionViewSource则会成为数据源,并充当截取ObjectDataProvider中的数据的媒介,并提供排序、分组和筛选功能,然后将它传送到目标。   & 查看详情

如何通过 Chrome 扩展将 CSS 注入网页?

】如何通过Chrome扩展将CSS注入网页?【英文标题】:HowtoinjectCSSintowebpagethroughChromeextension?【发布时间】:2011-11-2823:09:52【问题描述】:我不知道如何通过Chrome扩展程序将CSS注入网页。我正在尝试将其注入网页:bodybackground:#000!impo... 查看详情

如何通过反射将参数传递给方法

】如何通过反射将参数传递给方法【英文标题】:Howtopassparameterstoamethodbyreflection【发布时间】:2010-11-3016:19:19【问题描述】:除了myprecedentquestion,我想将参数传递给方法“WriteTrace”。但我不知道该怎么做。这里是实际代码:pub... 查看详情

如何通过javascript将日期转换为毫秒? [复制]

】如何通过javascript将日期转换为毫秒?[复制]【英文标题】:Howtoconvertdatetomillisecondsbyjavascript?[duplicate]【发布时间】:2018-08-2105:49:04【问题描述】:例如,我有多个日期(25-12-2017),我需要通过javascript将它们转换为毫秒【问题... 查看详情

如何通过变量/方法将Django模板代码注入模板?

】如何通过变量/方法将Django模板代码注入模板?【英文标题】:HowtoinjectDjangotemplatecodeintotemplatethroughvariable/method?如何通过变量/方法将Django模板代码注入模板?【发布时间】:2017-02-1823:48:49【问题描述】:我有一个模型预订,我... 查看详情

如何通过传入连接将手机与计算机连接?

】如何通过传入连接将手机与计算机连接?【英文标题】:howtoconnectacellphonewithcomputerbyincomingconnection?【发布时间】:2011-09-0207:46:58【问题描述】:嗨是否可以通过传入连接或类似的方式将手机与计算机连接?我不想使用无线,... 查看详情

如何通过jquery将表单数据与图像一起传递? [复制]

】如何通过jquery将表单数据与图像一起传递?[复制]【英文标题】:Howtopassformdataalongwithimagethroughjquery?[duplicate]【发布时间】:2017-06-2903:21:39【问题描述】:我想通过jquery将表单数据传递到php页面。现在我对通过jquery传递的图像... 查看详情

如何通过 webhook 将 heroku 日志发送到不和谐?

】如何通过webhook将heroku日志发送到不和谐?【英文标题】:Howtosendherokulogstodiscordviawebhooks?【发布时间】:2021-05-1923:40:20【问题描述】:我看到herokucli,通过-tail实时登录很酷但是如何通过webhook将实时日志记录发送到discord(例如... 查看详情