您的位置:首页 > 其它

WPF DataGrid 中的DataGridComboBoxColumn 使用

2012-01-13 09:49 423 查看
步骤一、新建枚举类型

public enum WeightUnits { 克,斤,公斤,千克,吨,毫克 };

步骤二、在资源中创建 数据提供者

<UserControl x:Class="XXXXView"
xmlns:core="clr-namespace:System;assembly=mscorlib"

xmlns:local="clr-namespace:<枚举所在的命名空间>"
/>

<UserControl.Resources>

<ObjectDataProvider x:Key="myEnum" MethodName="GetValues" ObjectType="{x:Type core:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type Type="local:WeightUnits"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>

</UserControl.Resources>

之前要生命一些XML空间

xmlns:core="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:Qtrunk.Modules.SiteManagement"

步骤三、在DataGrid中标记

<DataGridComboBoxColumn Header="辅助单位"
TextBinding ="{Binding SubAssistUnitName}"
ItemsSource="{Binding Source={StaticResource myEnum}}"
>

</DataGridComboBoxColumn>

对比了网上的许多片段,感觉这种方式虽然算不上完美的解决方案,不过还算简单可行。

主要参考资料

微软官方的MSDN
http://msdn.microsoft.com/zh-cn/library/system.windows.controls.datagridcomboboxcolumn.aspx
-----------------------------------------------------------------------------------------------------------

2013-06-19 补充方法

-------------------------------------------------------------------------------------------------------------

<DataGrid x:Name="gridEmployers" AutoGenerateColumns="False" ItemsSource="{Binding}" DataContext="{Binding}">

--------------- 省略
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Text="{Binding Name}"
IsEditable="True"
DisplayMemberPath="Name"
ItemsSource="{Binding Source={StaticResource employers}}"
/>
</DataTemplat>
</DataGridTemplateColumn.CellEditingTemplate>

--------------省略
  </DataGrid>

<Window.Resources>
<ObjectDataProvider x:Key="employers" ObjectType="{x:Type local:_2011_12_28_01_Data}" MethodName="GetEmployers"/>
</Window.Resources>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: