【问题标题】:List doesn't get updated in custom control列表未在自定义控件中更新
【发布时间】:2013-03-19 18:46:17
【问题描述】:

我有一个从网格继承的自定义控件。在该控件中,我有一个 ColumnHeaders 列表(从 Label 继承的控件)。但是列表不起作用。ColumnHeaders 是在 xaml 中定义的。

代码

public List<ColumnHeader> ColumnHeaders { get { return (List<ColumnHeader>)GetValue(ColumnHeadersProperty); } set { SetValue(ColumnHeadersProperty, value); } }

public static readonly DependencyProperty ColumnHeadersProperty = DependencyProperty.Register("ColumnHeaders", typeof(List<ColumnHeader>), typeof(DataGrid),
            new FrameworkPropertyMetadata(new List<ColumnHeader>(), FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsParentMeasure, OnColumnHeadersChanged));



<lib:DataGrid Columns="9" Rows="16" x:Name="mVersions" RowHeader="True" ColumnHeader="True" ColumnEnter="ColumnEnter" Background="Transparent">
    <lib:DataGrid.ColumnHeaders>
        <lib:ColumnHeader Content="Bedieningsb." />
        <lib:ColumnHeader Content="LCD" />
        <lib:ColumnHeader Content="Herhaalb." />
        <lib:ColumnHeader Content="Relais" />
        <lib:ColumnHeader Content="Printer" />
        <lib:ColumnHeader Content="Voedingscontr." />
        <lib:ColumnHeader Content="Redundantie" />
        <lib:ColumnHeader Content="WebModule" />
        <lib:ColumnHeader Content="Net" />
    </lib:DataGrid.ColumnHeaders>
</lib:DataGrid>

永远不会调用函数 OnColumnHeadersChanged。为什么??但是其他属性正在更新网格。

【问题讨论】:

  • 使用ObservableCollection 而不是List
  • ObservableCollection 也不起作用
  • 没有人知道我如何让它工作吗?

标签: c# wpf custom-controls


【解决方案1】:

你可以试试这段代码

public static readonly DependencyProperty ColumnHeadersProperty = DependencyProperty.Register("ColumnHeaders", typeof(List<ColumnHeader>), typeof(DataGrid),
  new PropertyMetadata(OnColumnHeadersChanged));

【讨论】:

  • 我得到一个没有默认值的空异常,使用默认值结果和以前一样
猜你喜欢
  • 2018-01-29
  • 2016-10-03
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 2015-09-25
  • 2014-02-22
  • 1970-01-01
相关资源
最近更新 更多