Domanda

Sto cercando di collegarmi a una casella di riepilogo in questo modo:

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

Il motivo per cui sono vincolante per l'intero oggetto e non per una proprietà è perché il mio convertitore avrà bisogno di più proprietà dell'oggetto per costruire la stringa che restituisce.

Funziona e la mia stringa viene restituita. Ma poi, quando cambio ObservableCollection, questo si basa sul valore che non cambia sullo schermo. Se mi associo a una sola proprietà e la cambio, il valore cambia.

Cosa posso fare diversamente? Non riesco a collegarmi a una singola proprietà poiché ho bisogno dell'intero oggetto nel convertitore ... E ConverterParameter è già in uso.

È stato utile?

Soluzione

Ricorda, se ti leghi a " main " e il valore della proprietà principale stessa non viene modificato, l'associazione non avrà motivo di aggiornarsi. Non ha idea che il convertitore sia effettivamente basato su una sotto-proprietà. Quello che puoi fare è utilizzare un MultiBinding dove vincoli non solo il "principale" proprietà, ma anche una sotto-proprietà specifica. Ciò consente a IMultiValueConverter di accedere all'implementazione oggetto dati principale, ma poiché stai vincolando anche la sotto-proprietà che sta cambiando, verrà aggiornata anche quando il valore di quella sotto-proprietà cambia.

Altri suggerimenti

Puoi provare a utilizzare un MultiBinding che credo venga aggiornato ogni volta che viene attivato uno qualsiasi dei suoi Binding. Puoi anche utilizzare un IMultiValueConverter o solo sfruttare il StringFormat dell'associazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top