自定义控件中的集合属性如何实现
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 的控件,学习一下。
我的测试代码:
private void button1_Click(object sender, RoutedEventArgs e) { this.chart1.Lines.Add(new LineItem() { BorderThickness= new Thickness(1) , BorderBrush = new SolidColorBrush( Colors.Purple) }); }