Pergunta

Eu criar um UserControl (TableWithFilter.xaml) com uma propriedade de dependência (fonte). O UserControl é uma tabela com a propriedade de origem para os diferentes itens. Eu criei o XAML e definir a propriedade de origem através do XAML vinculação. Até aqui tudo bem.

Mas, se o valor da propriedade de dependência é alterada, o método de retorno definido não é chamado. Portanto, não posso atualizar as entradas na minha mesa. Alguém tem uma idéia de por que o método de retorno não é chamado?

Aqui está a definição da minha propriedade na classe "TableWithFilter":

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

e o método de retorno de chamada:

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

e aqui o 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>

Se o atributo "ContentList" é alterada I expet que o método "ChangeSource" na classe TableWithFilder é chamado. Mas este não é o caso. Depois eu mudei o atributo ContentList, Eu levanto o seguinte evento:

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

Thx para todas as idéias.

Foi útil?

Solução

Há uma diferença entre toda a propriedade mudar (ou seja, uma nova referência a uma coleção que está sendo especificado) vs. o conteúdo da lista em si mudando. Coleções têm sua própria interface de notificação de alteração chamado INotifyCollectionChanged . Então, o que você precisa fazer é ouvir para a mudança de propriedade você tem agora e, dentro disso, ligar os eventos INotifyCollectionChanged-se sobre a nova instância de coleção e, em seguida, responder a essas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top