Bind Enum to Combobox.SelectedIndex

來源:互聯網
上載者:User

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

 

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

 

 

 

 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.