私はMVVMを備えたwpfアプリケーションを持っています。私は自分のクローズボタンを作成しようとしています。この回答Creating a custom Close Button in WPFに基づいて、(xaml.cs)コードのボタンイベントハンドラを追加しました。ただし、Close();
コールは認識されません(コンテキストには存在しません。シンボルを解決できません)。自分の閉じるボタンを作成するには?
また、他の回答を試みて、Command
とCommandParameter
をボタンのxamlに追加しました。しかし、後ろの機能はヒットしていません。 RelayCommand
を使用してHow to bind Close command to a buttonで私の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パターンを正確にフォローしていない可能性があります。 Clickイベントの代わりに 'RelayCommands'が使われます。 – Jonesopolis