Pergunta

Eu estou tentando vincular a uma caixa de listagem assim:

<ListBox x:Name="MyListBox" Margin="0,0,0,65">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Converter={StaticResource MyConverter}}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

A razão que eu estou ligação a todo o objeto e não uma propriedade é porque meu conversor vai precisar de várias propriedades do objeto para construir a cadeia que ele retorna.

Isso funciona e minha string é retornado. Mas então, quando eu mudar o ObservableCollection que este é baseado no valor não é alterado na tela. Se eu ligar para apenas uma única propriedade e alterá-lo, então o valor será alterado.

O que eu posso fazer de diferente? Eu não pode vincular a uma única propriedade desde que eu preciso o objeto inteiro no conversor ... E o ConverterParameter já está sendo usado.

Foi útil?

Solução

Lembre-se, se você ligar para a propriedade "principal" e o valor da própria propriedade principal não é alterado, a ligação não terá nenhuma razão para refrescar-se. Não tem nenhum indício de que o seu conversor é realmente baseado fora de uma sub-propriedade. O que você pode fazer é usar um MultiBinding onde se ligam não apenas a propriedade "principal", mas também uma sub-propriedade. Isto dá a seu IMultiValueConverter acesso implementação do objeto de dados principal, mas porque você também está de ligação à sub-propriedade que está mudando, também será atualizado quando o valor de mudanças de que sub-propriedade.

Outras dicas

Você pode tentar usar um MultiBinding que eu acredito que as atualizações sempre que qualquer de suas ligações são acionados. Você também pode usar um IMultiValueConverter ou apenas aproveitar o StringFormat da ligação.

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