我创建一个用户控件(TableWithFilter.xaml)与依赖性财产的(来源)。用户控件是一个表格有一个来源的财产的不同的项目。我所创建的反馈组源的财产通过XAML结合。到目前为止一切顺利。

但是,如果价值的依赖性更改,该定义的回调的方法是不叫。因此,我无法更新项目在我的桌上。有任何人的想法为什么回调的方法是不叫什么?

在这里的定义是我的财产的类"TableWithFilter":

Public Shared ReadOnly SourceProperty As DependencyProperty = _
        DependencyProperty.Register("Source", GetType(List(Of TableViewItem)), GetType(TableWithFilter), _
                                    New FrameworkPropertyMetadata(Nothing, New PropertyChangedCallback(AddressOf TableWithFilter.ChangeSource)))

和回调的方法:

 Private Shared Sub ChangeSource(ByVal source As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
        Dim table As TableWithFilter = source
        table.Source = e.NewValue
    End Sub

和这里的键

<Border Grid.Row="1" Grid.Column="1" BorderBrush="{StaticResource ElementBorder}" BorderThickness="1">
    <local:TableWithFilter x:Name="SearchResultTable" Source="{Binding Source={StaticResource contentFacade}, Path=ContentList}" />    
</Border>

如果属性"ContentList"改变我expet,"ChangeSource"方法在TableWithFilder类被称为。但这不是这种情况。之后我改变了ContentList属性,我提出以下活动:

RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("ContentList"))

谢谢任何的想法。

有帮助吗?

解决方案

之间是有区别的整个财产改变的(即一个新的参照的集合被指定的)对列表的内容本身的变化。收藏有他们自己的改变通知所谓的接口 INotifyCollectionChanged.所以你需要做的是听酒店的变化你现在已经和里面的那个,用挂钩 INotifyCollectionChanged 事件自己在新收集的实例,然后应对那些。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top