Pregunta

Estoy tratando de vincular datos a un cuadro de lista de esta manera:

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

La razón por la que estoy vinculado a todo el objeto y no a una propiedad es porque mi convertidor necesitará varias propiedades del objeto para construir la cadena que devuelve.

Esto funciona y se devuelve mi cadena. Pero luego cuando cambio la ObservableCollection que se basa en el valor no cambia en la pantalla. Si me vinculo a una sola propiedad y la cambio, entonces el valor cambia.

¿Qué puedo hacer de manera diferente? No puedo vincularme a una sola propiedad, ya que necesito todo el objeto en el convertidor ... Y el convertidor de parámetros ya se está utilizando.

¿Fue útil?

Solución

Recuerda, si te unes a " main " La propiedad y el valor de la propiedad principal en sí no se modifican, el enlace no tendrá ninguna razón para actualizarse. No tiene idea de que su convertidor se base realmente en una subpropiedad. Lo que puede hacer es usar un MultiBinding donde se vincula no solo el " principal " propiedad, pero también una subpropiedad específica. Esto le da a su IMultiValueConverter acceso a la implementación objeto de datos principal, pero debido a que también está vinculado a la subpropiedad que está cambiando, también se actualizará cuando cambie el valor de esa subpropiedad.

Otros consejos

Puede intentar usar un MultiBinding que creo que se actualiza cada vez que se desencadena cualquiera de sus enlaces. También puede usar un IMultiValueConverter o simplemente aproveche el StringFormat del enlace.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top