天天看點

Bind Enum to Combobox.SelectedIndex

原文:

Bind Enum to Combobox.SelectedIndex

Do you mean that you want to bind a variable (not a property) to ComboBox.SelectedIndex? If so, I think that the better method to do this is bind a property to ComboBox.SelectedItem. The following example shows how to bind a property to the ComboBox.SelectedItem. If you want to have more functionality from the binding, you should have the property is a dependency property.

Code Snippet

Bind Enum to Combobox.SelectedIndex

<Window x:Class="LearningSolution.MainWindow"

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

xmlns:system="clr-namespace:System;assembly=mscorlib"

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

xmlns:local="clr-namespace:LearningSolution"

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

Name="TheWindow">

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

<Window.Resources>

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

<ObjectDataProvider x:Key="EnumValues"

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

MethodName="GetValues"

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

ObjectType="{x:Type system:Enum}">

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

<ObjectDataProvider.MethodParameters>

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

<x:Type TypeName="local:LevelEnum" />

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

</ObjectDataProvider.MethodParameters>

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

</ObjectDataProvider>

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

<DataTemplate x:Key="EnumValueTemplate">

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

<TextBlock Text="{Binding}"/>

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

</DataTemplate>

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

</Window.Resources>

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

<StackPanel>

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

<ComboBox ItemsSource="{Binding Source={StaticResource EnumValues}}"

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

ItemTemplate="{StaticResource EnumValueTemplate}"

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

SelectedItem="{Binding ElementName=TheWindow, Path=TheLevel, Mode=OneWayToSource}"/>

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

<Button Click="Button_Click">Watch</Button>

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

</StackPanel>

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

</Window>

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

public partial class MainWindow : Window

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

{

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

public LevelEnum TheLevel { get; set; }

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

private void Button_Click(object sender, RoutedEventArgs e)

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

MessageBox.Show(this.TheLevel.ToString());

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

}

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

public enum LevelEnum { None = 0, First = 1, Second = 2, Third = 3 }

Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex
Bind Enum to Combobox.SelectedIndex

For more information about binding and dependency property, you could refer to the following links.

http://msdn2.microsoft.com/en-us/library/ms753192.aspx http://msdn2.microsoft.com/en-us/library/ms750612.aspx

繼續閱讀