要在DataGrid中使用ComboBox,当然想到了用DataGridComboBoxColumn。
本来以为挺简单,结果网上看到的教程都是各种莫名其妙。然后我在这些个博客中逐个尝试,浪费了大量时间,非常窝火。。更过分的是看到一个博客内容写一些根本不能用的残缺内容,然后下面包含代码下载,竟然还要30个积分!!!!
最后我在微软官网找到了答案,这里我精简下DataGridComboBoxColumn的使用,希望有需要的朋友不要走弯路。。。
官方文档地址:
前台代码:
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:core="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<ObjectDataProvider x:Key="SexEnumKey" MethodName="GetValues" ObjectType="{x:Type core:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type Type="local:SexEnum"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<Grid >
<DataGrid Name="DG1" ItemsSource="{Binding}" CanUserAddRows="False" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="性别" SelectedItemBinding="{Binding sex}" ItemsSource="{Binding Source={StaticResource SexEnumKey}}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
后台代码:
namespace WpfApp1
{
public class Customer
{
public SexEnum sex { get; set; }
}
public enum SexEnum { 男,女 };
public partial class MainWindow : Window
{
ObservableCollection<Customer> custdata = new ObservableCollection<Customer>();
public MainWindow()
{
InitializeComponent();
Customer cm = new Customer();
cm.sex = SexEnum.男;
custdata.Add(cm);
DG1.DataContext = custdata;
}
}
}
版权声明:本文为jiyanglin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。