WPF案例展示
下拉框的数据绑定
枚举转换成对应的中文
设置数据上下文,设置数据源,设置数据格式转换器
<UserControl.DataContext><ViewModels:SelfViewModelAll />
</UserControl.DataContext>
<UserControl.Resources><Model:SelfModelC x:Key="SelfModelC" d:IsDataSource="True"/><DataTemplate x:Key="EnumItemTemplate"><TextBlock Text="{Binding Converter={StaticResource SelfModelC}}" /></DataTemplate>
</UserControl.Resources>
下拉框的设置:
<ComboBox Name="ModelChoose" ItemsSource="{Binding ModelList //数据来源(链表),diagnostics:PresentationTraceSources.TraceLevel=High}" //测试SelectedItem="{Binding SelectedModel, Mode=TwoWay}" //选择的项ItemTemplate="{StaticResource EnumItemTemplate}" //转换器HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="3" Grid.Column="1" Height="25" />
注意ModelList必须为属性,写Get/set方法并且是Public类型,否则会找不到
public ObservableCollection<SelfModel> ModelList { get; set ; } = new ObservableCollection<SelfModel>();private SelfModel _selectedModel;public SelfModel SelectedModel{get => _selectedModel;set => SetProperty(ref _selectedModel, value);}public SelfViewModelAll(){// 填充枚举值foreach (SelfModel type in Enum.GetValues(typeof(SelfModel))){ModelList.Add(type);}}
枚举:
public enum SelfModel : int{A= 0,B,C,}
转换器:必须自己一个文档,否则写路径时找不到
public class SelfModelC : IValueConverter{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value is SelfModel model){switch (model){case SelfModel.A:return "AA";case SelfModel.C:return "CC";case SelfModel.B:return "BB";default:return string.Empty;}}return string.Empty;}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotImplementedException();}}