读书人

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

发布时间: 2012-02-19 19:43:39 作者: rapoo

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

读书人网 >CAD教程

热点推荐