Ich habe eine UserControlBase
mit einem Raster. Das Raster enthält eine Spalte mit einer Aktion.ICommand funktioniert nicht in Silverlight Benutzersteuerung
<sdk:DataGridTemplateColumn Header="Action">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<Button Style="{StaticResource DataGridButton}" Command="{Binding Source={StaticResource NewsViewModel}, Path=ModifyNewsCommand}" Content="Modify" />
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
Mein Problem ist mit meiner Command
. Es wirft mich technischen Fehler, der mein erstes Problem ist, ich weiß nicht, wie man diese Anwendung wirft mir die echte Fehlermeldung.
Im Code hinter meiner Benutzersteuerung registriert ich die Ereignisse:
protected void RegisterMessages()
{
Messenger.Default.Register<string>(this, "NewNewsBtn_Click", NewNewsBtn_Click);
Messenger.Default.Register<string>(this, "ModifyNewsBtn_Click", ModifyNewsBtn_Click);
}
Und in meinem Konstruktor:
public NewsWindow(int underlyingId)
{
InitializeComponent();
this.RegisterMessages();
viewModel = new NewsViewModel(underlyingId);
ucNewsPanel.DataContext = viewModel;
}
Meine Ansicht Modell (NewsViewModel)
public ICommand ModifyNewsCommand
{
get
{
return new RelayCommand<string>(e =>
{
Messenger.Default.Send(string.Empty, "ModifyNewsBtn_Click");
});
}
}
Was ist seltsam hier ist, dass meine NewNewsBtn
funktioniert, während meine ModifyNewsBtn
ist nicht.
Dieser Knopf befindet sich außerhalb des Gitters, so dass es einen Unterschied machen kann, warum er funktioniert.
<Button x:Name="NewNewsBtn" MaxHeight="50" MaxWidth="100" Command="{Binding Path=NewNewsCommand}" Content="Add New" />
Warum verwenden Sie einen Static in Ihrer Bindung, anstatt nur die Datacontext zugreifen? Sieht für mich so aus, als ob der Button nicht funktioniert. – Martin
Ich denke, dieser Teil ist falsch ** Command = "{Binding Source = {StaticResource NewsViewModel}, Pfad = ModifyNewsCommand}" ** – ViVi
@Martin - Wenn Sie die StaticResource entfernen und nur den Pfad verlassen, funktioniert es nicht. Es wirft keinen Fehler auf, aber es tritt nicht in die Methode ein. –