DataGridComboBoxColumn 不显示绑定和选中的项
现在有一个DataGrid,绑定到curveSetWin窗口的CurveSettingList
colorBrushes如下:
GetBrushes如下
绑定的效果如下


curveName列和lineThickness是可以正确绑定的。lineColor列是根据ObjectDataProvider 提供的Rectangle显示颜色选择器。它的选项也可以填充各种颜色,但是在加载时lineColor列不显示相应的颜色,选中时再点击空白的地方也会消失。
哪位大神知道是怎么回事,DisplayMemberPath设置了也不好使。
<DataGrid ItemsSource="{Binding CurveSettingList,ElementName=curveSetWin}"
AutoGenerateColumns="False" IsReadOnly="False" CanUserSortColumns="False"
CanUserAddRows="False" CanUserDeleteRows="False"
LoadingRow="dataGrid_LoadingRow" AlternationCount="2">
<DataGrid.Columns>
<DataGridTextColumn Header="{DynamicResource curveName}" MinWidth="60" Binding="{Binding CurveName}" ElementStyle="{StaticResource dgCell}" HeaderStyle="{StaticResource dgHeader}" Width="*"></DataGridTextColumn>
<DataGridComboBoxColumn Header="{DynamicResource lineThickness}" MinWidth="60"
TextBinding="{Binding LineThickness}"
SelectedItemBinding="{Binding LineThickness,UpdateSourceTrigger=PropertyChanged}"
ElementStyle="{StaticResource dgComboBoxCell}"
HeaderStyle="{StaticResource dgHeader}" Width="*">
<DataGridComboBoxColumn.ItemsSource>
<col:ArrayList>
<sys:String>1</sys:String>
<sys:String>2</sys:String>
<sys:String>3</sys:String>
<sys:String>4</sys:String>
<sys:String>5</sys:String>
<sys:String>6</sys:String>
<sys:String>7</sys:String>
<sys:String>8</sys:String>
<sys:String>9</sys:String>
<sys:String>10</sys:String>
</col:ArrayList>
</DataGridComboBoxColumn.ItemsSource>
</DataGridComboBoxColumn>
<DataGridComboBoxColumn Header="{DynamicResource lineColor}" MinWidth="60"
ItemsSource="{Binding Source={StaticResource colorBrushes}}"
SelectedValueBinding="{Binding LineColor, Converter={StaticResource color2RectangleConverter}}"
SelectedItemBinding="{Binding LineColor, Converter={StaticResource color2RectangleConverter}, UpdateSourceTrigger=PropertyChanged}"
HeaderStyle="{StaticResource dgHeader}" Width="*">
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>colorBrushes如下:
<ObjectDataProvider MethodName="GetType"
ObjectType="{x:Type sys:Type}" x:Key="colorsTypeOdp">
<ObjectDataProvider.MethodParameters>
<sys:String>System.Windows.Media.Colors, PresentationCore,
Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35</sys:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ObjectDataProvider ObjectType="{x:Type local:GetBrushes}"
MethodName="GetRectangles" x:Key="colorBrushes">
<ObjectDataProvider.MethodParameters>
<ObjectDataProvider ObjectInstance="{StaticResource colorsTypeOdp}"
MethodName="GetProperties">
</ObjectDataProvider>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>GetBrushes如下
public class GetBrushes
{
public List<Rectangle> GetRectangles(ObjectDataProvider PropertyName)
{
List<Rectangle> result = new List<Rectangle>();
PropertyInfo[] pi = PropertyName.Data as PropertyInfo[];
foreach (var item in pi)
{
Rectangle newRect = new Rectangle();
newRect.Fill = new SolidColorBrush((Color)ColorConverter.ConvertFromString(item.Name));
newRect.Height = 20;
newRect.Width = 60;
newRect.Margin = new Thickness(0);
result.Add(newRect);
}
return result;
}
}绑定的效果如下


curveName列和lineThickness是可以正确绑定的。lineColor列是根据ObjectDataProvider 提供的Rectangle显示颜色选择器。它的选项也可以填充各种颜色,但是在加载时lineColor列不显示相应的颜色,选中时再点击空白的地方也会消失。
哪位大神知道是怎么回事,DisplayMemberPath设置了也不好使。
...全文
相关推荐
Datagrid中使用combobox
wpf中DataGrid中使用combobox 的控件的小例子
WPF DataGrid.DataGridComboBoxColumn 数据绑定 可用自由示例
尝试了一些教程,不好使。手写一个比较自由的示例: 先上效果图:(不知道怎么多了一行,欢迎指教) xaml代码: <Grid> <Grid.Resources> <!--Create list of enumeration values--> <ObjectDataProvider x:Key="strLi...
DataGridComboBoxColumn 绑定数据 取值实例
WPF DataGrid DataGridComboBoxColumn实现与大家分享!
DataGridComboBoxColumn 通过XAML绑定示例 含Enum的绑定
DataGridComboBoxColumn 数据列选项通过XAML从Enum定义中提取。对数据对象的绑定并更改数据值;工程力求简单,方便看懂看明白。
C# gridview 控件实例
一个DataGrid,支持列样式有:ComboBox列,Button列,DateTimePicker列,Bool列,Image列.行头数字,自动列宽,设置文字变红,打印预览,直接打印,导出Excel,导出Word,导出Xml,导出Html等等功能,所有这些功能都封装到一个Dll中,使用方便.里面有源代码和使用例子,希望对大家有用,呵呵.


