none
WPF中datagrid加入Ellipse RRS feed

  • 问题

  • 谢谢,进来关注的各位。
    我想在datagrid里的第一列里面填充一个 Ellipse 首先是这样操作:
     
    建一个Model  其中有一列
      public System.Windows.Media.Color brushColor
            {
                get { return _brush; }
                set {_brush = value; }
            }
     
    这是datagrid绑定的方式
    binding = new System.Windows.Data.Binding("brushColor");
       binding.Mode = System.Windows.Data.BindingMode.OneWay;
       DataGridTemplateColumn dgFileCopyColumnDown = new DataGridTemplateColumn();
       dgFileCopyColumnDown.SetCurrentValue(System.Windows.FrameworkElement.TagProperty, 1);
       dgFileCopyColumnDown.Header = "设备状态";
       dgFileCopyColumnDown.Width = 100;
       System.Windows.DataTemplate dtFile = CreateDT(binding);
       dgFileCopyColumnDown.CellTemplate = dtFile;
       dgFileCopyColumnDown.Visibility = System.Windows.Visibility.Visible;
    //dg_Function是datagrid
       dg_Function.Columns.Add(dgFileCopyColumnDown);	
    
     

     private DataTemplate CreateDT(Binding binding)
        {
          System.Windows.DataTemplate dt = new System.Windows.DataTemplate();
          System.Xml.Linq.XNamespace ns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation";
          System.Xml.Linq.XElement xDataTemplate =
          new System.Xml.Linq.XElement(ns + "DataTemplate",
            new System.Xml.Linq.XAttribute("xmlns", "http://schemas.microsoft.com/winfx/2006/xaml/presentation"),
          new System.Xml.Linq.XElement(ns + "Ellipse", new System.Xml.Linq.XAttribute("Width", "12"),
            new System.Xml.Linq.XAttribute("Fill", "{Binding brushColor, Mode=OneTime}"), new System.Xml.Linq.XAttribute("Height", "12"),
            new System.Xml.Linq.XAttribute("Name", "ellipseBlink"))
          );
          System.Xml.XmlReader xr = xDataTemplate.CreateReader();
          dt = System.Windows.Markup.XamlReader.Load(xr) as DataTemplate;
          return dt;
        }

    结束,但是没有显示任何的东西。应该是颜色写错了。 谢谢您的耐心看完,能不能帮忙一起看看什么问题导致的。

    2011年4月25日 7:53

答案

  • Fill 要一个Brush, 但是我赋值的是一个Color,所以不显示, 整合我的项目里面这个错误一直不显示,但是我把它单独写成一个实例,就有数据源错误的提示。耽误大家的时间了。
    • 已标记为答案 wpf001 2011年4月26日 7:19
    2011年4月26日 7:19

全部回复

  • 哪位在,能不能指点一下。 或者有没有别的办法实现这样的效果,我在示例 写在xaml里面圆绑定有效果。

    2011年4月26日 1:02
  •    new System.Xml.Linq.XAttribute("Fill", "{Binding brushColor, Mode=OneTime}"), new System.Xml.Linq.XAttribute("Height", "12"),

    这行如果直接绑定一种颜色是可以显示圆形的

      new System.Xml.Linq.XAttribute("Fill", System.Windows.Media.Color.FromArgb(255,181,181,181)),new System.Xml.Linq.XAttribute("Height", "12"),

    这样可以显示颜色,但是绑定颜色就不行

    现在循环数据源是这么处理的:

                    if (State == "1")
                        brushColor = Color.FromArgb(255,99,99,99);
                    else
                        brushColor = Color.FromArgb(255, 128, 128, 128);

     


    2011年4月26日 6:45
  • Fill 要一个Brush, 但是我赋值的是一个Color,所以不显示, 整合我的项目里面这个错误一直不显示,但是我把它单独写成一个实例,就有数据源错误的提示。耽误大家的时间了。
    • 已标记为答案 wpf001 2011年4月26日 7:19
    2011年4月26日 7:19
  • Fill需要的是一个brush,

    Brush brush = new SolidColorBrush(Colors.Red);

    还有,下次关于WPF的问题,你可以到WPF论坛去提问,链接是:

    http://social.microsoft.com/Forums/zh-CN/wpfzhchs/threads

     


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年4月26日 10:12