原文:
Bind Enum to Combobox.SelectedIndex
<
Window
x:Class
="LearningSolution.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:local
="clr-namespace:LearningSolution"

Name
="TheWindow"
>

<
Window
.Resources
>

<
ObjectDataProvider
x:Key
="EnumValues"

MethodName
="GetValues"

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

<
ObjectDataProvider
.MethodParameters
>

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

</
ObjectDataProvider.MethodParameters
>

</
ObjectDataProvider
>

<
DataTemplate
x:Key
="EnumValueTemplate"
>

<
TextBlock
Text
="{Binding}"
/>

</
DataTemplate
>

</
Window.Resources
>

<
StackPanel
>

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

ItemTemplate
="{StaticResource EnumValueTemplate}"

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

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

</
StackPanel
>

</
Window
>

public partial class MainWindow : Window

{

public LevelEnum TheLevel { get; set; }

private void Button_Click(object sender, RoutedEventArgs e)

{

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

}

}

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

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






































































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