NoN*_*ded 4 c# wpf enums xaml combobox
好吧,我在这里发现了很多关于此的问题,但所有这些对我来说似乎都是古老而复杂的。
我有一个组合框,它绑定到视图模型类。
class SettingsViewModel
{
public PictureRecognitionIntensivity PictureRecognitionIntensivity { get; set; }
public Array PictureRecognitionIntensivityValues
{
get { return PictureRecognitionIntensivity.GetValues(typeof(PictureRecognitionIntensivity)); }
}
public SettingsViewModel()
{
// Set default values for testing;
this.PictureRecognitionIntensivity = PictureRecognitionIntensivity.Moderate;
}
}
Run Code Online (Sandbox Code Playgroud)
XAML部分:
<ComboBox SelectedItem="{Binding Path=PictureRecognitionIntensivity}" ItemsSource="{Binding Path=GetPictureRecognitionIntensivityValues}" />
Run Code Online (Sandbox Code Playgroud)
此代码正确地将值加载到组合框中,并且当选择更改时,值会更改为所选项目,因此它可以正常工作,但它不会将初始状态加载到组合框中。(一开始是空的。)
我在某个地方看到 Enum.GetValues 返回一个字符串,所以我尝试将其转换为如下字符串:
return this.PictureRecognitionIntensivity.toString();
Run Code Online (Sandbox Code Playgroud)
但它也不起作用。我的问题是将枚举实例添加到组合框并为其设置 selectedItem 的简单方法是什么。
小智 5
我对给定枚举建议的最简单方法
public enum PictureRecognitionIntensivity
{
FIRST,
SECOND,
THIRD,
FORTH,
}
Run Code Online (Sandbox Code Playgroud)
在视图资源中声明静态实例如下
<Window.Resources>
<ObjectDataProvider x:Key="dataFromEnum" MethodName="GetValues" ObjectType="{x:Type System:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:PictureRecognitionIntensivity"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
然后在您的 ComboBox 中将其绑定如下:
<ComboBox ItemsSource="{Binding Source={StaticResource dataFromEnum}}" SelectedItem="{Binding intensity }"/>
Run Code Online (Sandbox Code Playgroud)
然后设置初始枚举值应该按您的预期工作。
归档时间: |
|
查看次数: |
8077 次 |
最近记录: |