Tengo una colección de objetos y un comando en mi ViewModel.Enlace para ver la propiedad del modelo desde ItemsControl.ItemTemplate
Quiero mostrar un hipervínculo para cada uno de los objetos de la colección, y establecer el Comando de cada hipervínculo a la misma orden, que pasa en el IDobjeto como el CommandParemeter. p.ej.
// View Model
public class MyViewModel : ViewModelBase
{
// Raises PropertyChanged event, ommited here
public List<MyClass> MyList {....}
public RelayCommand<int> MyCommand {....}
}
Configuré el DataContext de mi UserControl en la clase anterior de ViewModel. El XAML para este control de usuario es el siguiente:
<UserControl>
<ItemsControl ItemsSource="{Binding Path=MyList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<HyperlinkButton Content="{Binding Path=Description}" Command="{Binding Path=MyCommand}" CommandParameter="{Binding Path=MyClassID}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</UserControl>
la descripción del contenido de hipervínculo se muestra correctamente, pero el comando nunca se dispara, supongo que esto es porque es la búsqueda de un comando dentro del objeto MiClase?
¿Cómo puedo enlazar a UserControls DataContext.MyCommand en lugar de a MyClass.MyCommand que está buscando?
Chris Tengo el mismo problema que Fermin. Estoy usando SL 5, el enlace RelativeSource no funciona, ni tu respuesta. Por cierto, no veo cómo podría funcionar su respuesta, ya que DataContext no tiene una propiedad llamada MyCommand. En mi View, es decir, tengo una propiedad llamada ViewModel en el getter, hago esto: return (MyViewModel) DataContext. Todavía no funciona. – Sam
Hola Sam, MyCommand se relaciona con el ejemplo que proporcionó Fermin: un comando en su modelo de vista. Lamentablemente, no tengo suficientes detalles de tu problema para ayudarte. Sería mejor que comenzaras una nueva pregunta, con detalles de qué estás tratando de hacer exactamente y cómo estás tratando de hacerlo. –