我该如何解决这个明显的Catch22

时间:2015-11-13 15:32:09

标签: wpf vb.net custom-controls

我有一个wpf自定义控件(通常)是一个共享构造函数。这个看起来像这样;

Shared Sub New()
    'This OverrideMetadata call tells the system that this element wants to provide a style that is different than its base class.
    'This style is defined in Themes\Generic.xaml
    DefaultStyleKeyProperty.OverrideMetadata(GetType(VtlDataNavigator), New FrameworkPropertyMetadata(GetType(VtlDataNavigator)))

    ItemsSourceProperty.OverrideMetadata(GetType(VtlDataNavigator), New FrameworkPropertyMetadata(Nothing, AddressOf OnItemsSourceHasChanged))
End Sub

控件继承了ItemsControl,我想知道itemsSource何时更改因此构造函数中的第二行。 OnItemsSourceHasChanged需要是一个共享子,以便构造函数中的行进行编译。细

在共享子目录中,我有以下内容:

  Private Shared Function OnItemsSourceHasChanged(d As DependencyObject, e As DependencyPropertyChangedEventArgs) As Object
    RecordCount = Items.SourceCollection.Cast(Of Object)().Count()
End Function

当然无法编译,因为您无法在不创建类的特定实例的情况下从共享方法中引用类的实例方法。即使为此创建一个单独的非共享处理程序,我仍然会在尝试调用它时遇到相同的错误。

本质上,我想要的是来自ItemsSource的RecordCount总数(因此我需要知道它何时被更改),以便我可以将该值分配给RecordCount。然而,我所看到的却是错误的谚语。

答案可能是盯着我看,但现在它逃脱了我。任何想法?

0 个答案:

没有答案