문제

종속성 속성 (소스)이있는 USERCONTROL (TableWithFilter.xaml)을 만듭니다. UserControl은 다른 항목에 대한 소스 속성이있는 테이블입니다. 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

그리고 여기 XAML :

<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"가 변경되면 i TableWithFilder 클래스의 "ChangesOURCE"메소드가 호출되도록 소출합니다. 그러나 이것은 사실이 아닙니다. ContentList 속성을 변경 한 후 다음 이벤트를 제기합니다.

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

모든 아이디어에 대한 thx.

도움이 되었습니까?

해결책

전체 속성 변경 (예 : 지정되는 컬렉션에 대한 새로운 참조)과 목록 자체의 내용이 변경되는 사이에는 차이가 있습니다. 컬렉션에는 자체 변경 알림 인터페이스가 호출됩니다 INotifyCollectionChanged. 그래서 당신이해야 할 일은 지금 가지고있는 속성 변화를 듣는 것입니다. INotifyCollectionChanged 새로운 컬렉션 인스턴스에서 직접 이벤트를 한 다음 이에 응답하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top