原文:
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.
posted on 2018-07-11 01:18 阅读( ...) 评论( ...)