专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Silverlight

自定义控件中的集合属性怎么实现

发布时间:2011-06-27 20:15:10 文章来源:www.iduyao.cn 采编人员:星星草
自定义控件中的集合属性如何实现
class 1:
public class Chart : Control
  {
  public Chart() {
  this.DefaultStyleKey = typeof(Chart);
  this._series = new Collection<LineItem>(); 
  }
  private Collection<LineItem> _series;
  public Collection<LineItem> Lines
  {
  get
  {
  return _series;
  }
  set
  {
  throw new NotSupportedException("NotSupportedException");
  }
  }
}
class 2:  
public class LineItem : Control //draw a line
  {
  public LineItem()
  {
  this.DefaultStyleKey = typeof(LineItem);
  }
  }
测试XAML
<custom1:Chart>
  <custom1:Chart.Lines>
  <custom1:LineItem />
  <custom1:LineItem />
  <custom1:LineItem />
  </custom1:Chart.Lines>
  </custom1:Chart>
没有错误,但不出东西
如果单独使用

  <custom1:LineItem />
  <custom1:LineItem />
  <custom1:LineItem />
则能画出三条线

------解决方案--------------------
看起来在Chart中只在内存中实例化了并没有将Lineitem加到children中所以不能显示
------解决方案--------------------
怎么没有使用 DependencyProperty ?
------解决方案--------------------
楼主把 Chart 在 Generic.xaml 中的样式发出来看看
------解决方案--------------------
我试了下代码,在后台通过 Button_Click 也显示不了,可能应是Generic.xaml的样式的问题,
我用的是 ItemsPresenter ,显示不了,正好等高手来解决如何显示带 ItemsPresenter 的控件,学习一下。 

我的测试代码:
C# code

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            this.chart1.Lines.Add(new LineItem() { 
                BorderThickness= new Thickness(1) ,
                BorderBrush = new SolidColorBrush( Colors.Purple)
            });
        }
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: