gpt4 book ai didi

c# - 如何将枚举绑定(bind)到 WPF 中的组合框控件?

转载 作者:IT王子 更新时间:2023-10-29 03:30:41 26 4
gpt4 key购买 nike

我试图找到一个简单的示例,其中枚举按原样显示。我见过的所有示例都试图添加美观的显示字符串,但我不希望如此复杂。

基本上我有一个类来保存我绑定(bind)的所有属性,方法是首先将 DataContext 设置为此类,然后在 xaml 文件中像这样指定绑定(bind):

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

但这不会将 ComboBox 中的枚举值显示为项目。

最佳答案

您可以通过将以下代码放在 Window Loaded 事件处理程序中来从代码中完成,例如:

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

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

<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>

注意下一段代码:

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

关于如何映射 namespace 和程序集的指南,您可以在 MSDN 上阅读.

关于c# - 如何将枚举绑定(bind)到 WPF 中的组合框控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6145888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com