DataGridComboBoxColumn 不显示绑定和选中的项

Zhang_Yunan 2017-01-09 11:27:06
现在有一个DataGrid,绑定到curveSetWin窗口的CurveSettingList
    <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设置了也不好使。
...全文
996 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zhang_Yunan 2017-01-12
  • 打赏
  • 举报
回复
引用 6 楼 duanzi_peng 的回复:
在LineColor 的set 里 加上断点,选择的时候看是否能执行。
LineColor就是简单的属性public Color LineColor { get; set; }无法设置断点。 但是我在Converter中是可以看到命中断点的。有转换过程。
  • 打赏
  • 举报
回复
引用 5 楼 YUNAN_ZHANG 的回复:
[quote=引用 4 楼 duanzi_peng 的回复:] 这个没错,但是 在选择的时候是否将Rectangle转为color类型? 显示与选择需要2个转换,只有在选择了之后 才能显示出来。
选择的时候是在哪里设置呢?某个DataGrid的属性,还是在cs后台某个函数中? 还有线条粗细是不用选择就可以显示,直接绑定后台数据在加载的时候就可以显示了。[/quote] 在LineColor 的set 里 加上断点,选择的时候看是否能执行。
Zhang_Yunan 2017-01-09
  • 打赏
  • 举报
回复
引用 4 楼 duanzi_peng 的回复:
这个没错,但是 在选择的时候是否将Rectangle转为color类型? 显示与选择需要2个转换,只有在选择了之后 才能显示出来。
选择的时候是在哪里设置呢?某个DataGrid的属性,还是在cs后台某个函数中? 还有线条粗细是不用选择就可以显示,直接绑定后台数据在加载的时候就可以显示了。
  • 打赏
  • 举报
回复
引用 3 楼 YUNAN_ZHANG 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] lineColor 类型与提供的选择器类型是否一致
但是有Converter将Color转换成了Rectangle类型。[/quote] 这个没错,但是 在选择的时候是否将Rectangle转为color类型? 显示与选择需要2个转换,只有在选择了之后 才能显示出来。
Zhang_Yunan 2017-01-09
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
lineColor 类型与提供的选择器类型是否一致
但是有Converter将Color转换成了Rectangle类型。
Zhang_Yunan 2017-01-09
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
lineColor 类型与提供的选择器类型是否一致
lineColor是Color类型的。选择器的类型是Rectangle类型的。
  • 打赏
  • 举报
回复
lineColor 类型与提供的选择器类型是否一致
内容概要:本文提出了一种基于混沌系统与DNA编码的复合型彩色数字图像加密方案,旨在解决传统加密算法密钥空间小、抗干扰能力弱的问题。该方案利用混沌系统生成伪随机序列,结合DNA碱基编码规则对图像RGB三通道进行像素级置换与混淆扩散,实现高安全性加密;解密过程则通过逆操作精确还原原始图像。文章重点对该方案进行了系统的抗噪声与抗裁剪性能分析,实验结果表明,该算法在面对高斯噪声、椒盐噪声以及不同面积、位置的裁剪攻击时均表现出优良的鲁棒性,能够有效恢复图像核心信息,适用于网络传输与私密存储等复杂环境下的图像安全保护。; 适合人群:具备一定信号处理或信息安全基础知识,从事图像加密、信息隐藏、多媒体安全等相关领域的科研人员及研究生。; 使用场景及目标:①用于提升数字图像在网络传输中的安全性,防止窃听与篡改;②适用于医疗影像、军事测绘、商业机密等对图像安全性和抗干扰性要求较高的应用场景;③为研究高鲁棒性图像加密技术提供理论支持与实验参考。; 阅读建议:建议读者结合Matlab代码实践加密与解密流程,并自行设计不同强度的噪声与裁剪干扰实验,深入理解混沌置乱与DNA编码在提升算法鲁棒性方面的协同机制。

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧