Tengo una vista que tiene una lista de elementos vinculados a mi ViewModel (patrón de MVVM).MVVM. ¿Está el código agregado a Ver justificado en algunos casos?
Digamos que parece que:
<ScrollViewer Width="Auto" Height="Auto">
<ItemsControl ItemsSource="{Binding Path=MessageLog}"
Grid.IsSharedSizeScope="True"
ScrollViewer.CanContentScroll="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" SharedSizeGroup="FullName"/>
<ColumnDefinition Width="*" SharedSizeGroup="MessageLog"/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="{Binding Path=PostedBy.FullName}" />
<TextBlock Text="{Binding Path=DatePosted}" />
</StackPanel>
<TextBlock Grid.Column="1" Text="{Binding Path=MessageLog}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
Cuando el usuario añade algo a messageLog (hay una propiedad messageLog en VM) Quiero desplazarse automáticamente al elemento más reciente.
En otras palabras, solo quiero mover la barra de desplazamiento automáticamente cuando el usuario escribe un mensaje y pulsa la tecla enter (algo así como lo hace Skype).
El enlace en MessageLog funciona como se esperaba y el elemento se actualiza en la vista. (Estoy contento con eso y quiero dejarlo así)
Me pregunto si al usar el enfoque de patrón MVVM, ¿puedo implementar un desplazamiento automático en el código detrás del archivo de la Vista? Parece bastante lógico ya que el comportamiento de desplazamiento no tiene nada que ver con la VM y ViewModel no sabe nada sobre la Vista. ¿Es correcto? ¿Voy bien o me falta algo?
En general, ¿cuándo tiene sentido agregar una implementación a una Vista?
Cualquier ejemplo de las propiedades/comportamientos adjuntos, ¡me gustaría obtener más información al respecto! –
@pete: escribí un artículo describiendo el uso de un Comportamiento: http://reedcopsey.com/2009/10/09/using-behaviors-to-allow-the-viewmodel-to-manage-view-lifetime-in-mv -vm/ –
@pete: Nishant Sivakumar lo transfirió a un accesorio adjunto estándar, también. Ver: http://reedcopsey.com/2010/04/15/attached-property-port-of-my-window-close-behavior/ –