Ich möchte eine einfache Schließen-Schaltfläche in einem WPF-Fenster implementieren. Das Fenster sieht grundsätzlich wie folgt:CommandParameter ist immer NULL
<Window x:Class="MyApplication.MainWindow"
xmlns=""....
...."
Title="MainWindow" WindowState="Maximized" WindowStartupLocation="CenterScreen" x:Name="mainWindow">
<DockPanel LastChildFill="True">
<Ribbon DockPanel.Dock="Top">
<Ribbon.ApplicationMenu>
<RibbonApplicationMenu SmallImageSource="Resources/menu_16x16.png">
<RibbonApplicationMenu.FooterPaneContent>
<RibbonButton Label="Beenden"
Command="{Binding CmdCloseApp}"
CommandParameter="{Binding ElementName=mainWindow}"
SmallImageSource="Resources/ende_16x16.png"
HorizontalAlignment="Right"/>
</RibbonApplicationMenu.FooterPaneContent>
</RibbonApplicationMenu>
</Ribbon.ApplicationMenu>
</Ribbon>
</DockPanel>
</Window>
Datacontext dieses Fenster ist Satz in seinem Code behindt zu einer Instanz von MainWindowViewModel
MainWindowViewModel:
public class MainWindowViewModel
{
public ICommand CmdCloseApp { get; set; }
public MainWindowViewModel()
{
CmdCloseApp = new RelayCommand<Window>(CloseApp);
}
public void CloseApp(Window w)
{
w.Close();
}
}
In CloseApp
w ist immer null. Alle anderen Befehle mit String-Parametern, etc .. funktionieren perfekt - mein einziges Problem ist, dass ich das Fensterelement nicht finde, finde einen Weg zu meinem Viewmodel.
danke für Ihre Hilfe!
EDIT Ich bin so traurig, ich versuchte es mit einem einfachen Knopfdruck und es funktionierte - Das Problem tritt nur bei RibbonButton
in Command versuchen, die Eltern zu binden, statt Fensternamen. –
Hallo, ich habe dein Sample ausprobiert und für mich funktioniert es einwandfrei, ich kann das Fenster als Parameter in meinem View-Modell bekommen. Verwenden Sie einen benutzerdefinierten Relay-Befehlscode? – Sivasubramanian
@RohitPrakash danke für diesen Punkt, ich habe bereits versucht, die Lösung mit 'FindAnastor'- aber bleibt null – CeOnSql