我有这样的枚举:
public enum MyLovelyEnum
{
FirstSelection,
TheOtherSelection,
YetAnotherOne
};
Run Code Online (Sandbox Code Playgroud)
我的DataContext中有一个属性:
public MyLovelyEnum VeryLovelyEnum { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的WPF客户端中有三个RadioButton.
<RadioButton Margin="3">First Selection</RadioButton>
<RadioButton Margin="3">The Other Selection</RadioButton>
<RadioButton Margin="3">Yet Another one</RadioButton>
Run Code Online (Sandbox Code Playgroud)
现在如何将RadioButtons绑定到属性以进行正确的双向绑定?
我试图找到一个简单的例子,其中枚举按原样显示.我见过的所有示例都尝试添加漂亮的显示字符串,但我不希望这种复杂性.
基本上我有一个类,它包含我绑定的所有属性,首先将DataContext设置为此类,然后在xaml文件中指定这样的绑定:
<ComboBox ItemsSource="{Binding Path=EffectStyle}"/>
Run Code Online (Sandbox Code Playgroud)
但是这并没有在ComboBoxas项中显示枚举值.
假设我有以下简单的枚举:
enum Response
{
Yes = 1,
No = 2,
Maybe = 3
}
Run Code Online (Sandbox Code Playgroud)
如何将此枚举绑定到DropDownList控件,以便描述显示在列表中,并在选择选项后检索关联的数值(1,2,3)?
假设我有一个包含四个值的枚举:
public enum CompassHeading
{
North,
South,
East,
West
}
Run Code Online (Sandbox Code Playgroud)
使用这些项目填充ComboBox需要什么样的XAML?
<ComboBox ItemsSource="{Binding WhatGoesHere???}" />
Run Code Online (Sandbox Code Playgroud)
理想情况下,我不必为此设置C#代码.
我有一个数据对象的选项列表,我想使用一个单选按钮列表,以允许用户选择一个,只有一个.功能类似于数据绑定组合框,但采用单选按钮格式.
愚蠢的我,我以为这将是内置的,但没有.你怎么做呢?
我正在使用枚举来在我的组合框中登记值.我想写一个转换器,它将显示所选枚举值的"描述".并且,选中后,它将返回枚举值.
大多数在线转换器都没有实现ConvertBack()方法(这就是我在这里发布的原因).
提前致谢.
我的域模型中有几个不同的实体(动物物种,比方说),每个实体都有一些属性.实体是只读的(它们在应用程序生命周期内不会改变状态)并且它们具有相同的行为(仅由属性值不同).
如何在代码中实现这样的实体?
我尝试了这样的枚举:
enum Animals {
Frog,
Duck,
Otter,
Fish
}
Run Code Online (Sandbox Code Playgroud)
其他代码片段将打开枚举.然而,这导致丑陋的切换代码,分散逻辑和组合框的问题.列出所有可能的动物没有很好的方法.序列化虽然很好.
我还想过每个动物类型在哪里是公共基础抽象类的子类.但是,对于所有动物来说,Swim()的实现是相同的,因此它没有多大意义,可串行化现在是一个大问题.由于我们代表一种动物类型(种类,如果你愿意),每个应用程序应该有一个子类的实例,当我们使用序列化时,这很难维护.
public abstract class AnimalBase {
string Name { get; set; } // user-readable
double Weight { get; set; }
Habitat Habitat { get; set; }
public void Swim(); { /* swim implementation; the same for all animals but depends uses the value of Weight */ }
}
public class Otter: AnimalBase{
public Otter() {
Name = …Run Code Online (Sandbox Code Playgroud) 我在这里已经阅读了这个非常相关的问题,由于答案中的链接,它非常有用.我现在只是遇到一个问题需要额外的步骤,并使其与MVVM模式一起工作.
假设我有自己的ViewModel,它(甚至模型)可以定义一个枚举:
public enum MyTypes { Type1, Type2, Type3 };
Run Code Online (Sandbox Code Playgroud)
我想在我的GUI中将其数据绑定到ComboBox.根据这篇文章,我将使用ObjectDataProvider来调用MyTypes上的Enum.GetValues()方法.所以我必须将MyTypes作为MethodParameter传递.但你怎么通过这种类型?我尝试了各种方法,比如在XAML中添加对命名空间的引用:
<Window.Resources>
<ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="TipHandlingValues">
<ObjectDataProvider.MethodParameters>
<!-- what goes here? it's totally wrong. -->
<my:MyTypes />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
几乎没有我放在那里甚至会编译.有谁知道如何克服这个小障碍?
我有一个Silverlight(WP7)项目,并希望将枚举绑定到列表框.这是一个包含自定义值的枚举,位于类库中.我该怎么做呢?
实际上,我可以将我的绑定Combobox到Enum使用他们的DescriptionAttribute:
<ComboBox ItemsSource="{Binding Source={extension:Enumeration {x:Type model:MyEnum}}}"
DisplayMemberPath="Description"
SelectedValue="{Binding Path=DataContextEnumProp}"
SelectedValuePath="Value"/>
Run Code Online (Sandbox Code Playgroud)
我用过这个 SO 答案
我的枚举是:
public enum MyEnum
{
[XmlEnum("first")]
[Description("first")]
FirstEnumMember,
[XmlEnum("second")]
[Description("second")]
SecondEnumMember,
//[XmlIgnore]
[Description("second")]
AlternativeToSecondEnumMember //I don't want this one to be in the combobox
}
Run Code Online (Sandbox Code Playgroud)
我需要隐藏AlternativeToSecondEnumMember,因为在ComboBox.
为此,最好的解决方案是什么?也许 aConverter或将ItemsSourcein 代码设置在后面?
我需要将枚举绑定到DataGridTemplateColumn中的组合框,但只包含枚举所具有的一些选项.
示例:
枚举选项:
未知,一,二,三,四,所有
可绑定的:一,二,三,四
有什么办法吗?
非常感谢.
最好的祝福
我试图在我的WF4项目中遵循这篇文章中的解决方案:将枚举属性数据绑定到WPF中的ComboBox
我已经实现了代码
<ObjectDataProvider MethodName="GetValues"
ObjectType="{x:Type s:Enum}"
x:Key="DayOfWeekValues">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="s:DayOfWeek" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ComboBox ItemsSource="{Binding Source={StaticResource DayOfWeekValues}}"/>
Run Code Online (Sandbox Code Playgroud)
我在TypeName ="s:DayOfWeek"属性上收到以下错误.
Cannot reparent the node "Type(System.DayOfWeek)" from the old parent "IList" to the new parent "ObjectDataProvider".
Run Code Online (Sandbox Code Playgroud)
有关此错误含义的任何想法?
编辑:除了上面的错误,我还在ObjectDataProvider上的MethodName ="GetValues"属性上收到以下错误.
INCORRECT_PARAMETER_TYPE
Run Code Online (Sandbox Code Playgroud)