首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

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

2012-02-19 
自定义控件中的集合属性如何实现class 1:public class Chart : Control{public Chart() {this.DefaultStyl

自定义控件中的集合属性如何实现
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)            });        } 

热点排行