我有一個MVVM的WPF應用程序。我正在嘗試構建我自己的關閉按鈕。基於這個答案Creating a custom Close Button in WPF我在查看(xaml.cs)代碼中添加了一個按鈕事件處理程序。但是,它不承認Close();
呼叫(在上下文中不存在 - 無法解析符號)。如何構建我自己的關閉按鈕?
另外我嘗試了其他答案,並將Command
和CommandParameter
添加到我的按鈕的xaml中。但背後的功能並沒有得到命中。在How to bind Close command to a button使用RelayCommand
也我wpf不承認RelayCommand
。然後How can I use the RelayCommand in wpf說我必須自己寫(真的?)。我記得有一種類似於的簡單方法設置按鈕的事件處理程序,並調用Close();
。但是,我該怎麼做,或者爲什麼它不適合我?
查看代碼:
private void closeButton_Click(object sender, RoutedEventArgs e)
{
// I want to call close the whole app on button click
//Close(); is not recognized
}
private void performMainCloseButtonCommand(object Parameter)
{
// This doesn't get hits on button click
Window objWindow = Parameter as Window;
objWindow.Close();
}
按鈕XAML:因爲可能沒有在當前類關閉調用的方法
<Button x:Name="closeButton" RenderTransformOrigin="0.5,0.5" Padding="0" Margin="701,0,0,0" BorderThickness="0" Click="closeButton_Click" Command="{Binding MainCloseButtonCommand}" CommandParameter="{Binding ElementName = mainWindow}" Height="45" Width="45" >
<StackPanel Height="45" Width="45">
<Image x:Name="closeButtonImage" Margin="0" Source="/ProjectName;component/Resources/x.fw.png" Height="33"/>
<TextBlock Text="Close" Width="36" Padding="6,0,0,0" HorizontalAlignment="Center" Height="13" FontSize="10"/>
</StackPanel>
</Button>
如果你只是在視圖和代碼背後工作,你可能沒有準確地跟隨MVVM模式。大多數情況下,使用'RelayCommands'來代替點擊事件。 – Jonesopolis