2012-05-04 12 views
0

ウィンドウの閉じるコマンドに依存するウィンドウスタイルのカスタム閉じるボタンを作成したいと思います。 私はこのような何かを書いた:ボタンをバインドしてウィンドウスタイルのコマンドを閉じるにはどうすればいいですか?

<Style x:Key="WindowsGeneralStyle" TargetType="Window"> 
    ... 
    <Setter Property="Template" > 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Window}"> 
       <Grid> 
        ... 
        <Button x:Name="closebtn" Command={Binding Close} ... /> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

をしかし、それは動作しませんでした。これはどうですか?

答えて

1

解決済みの問題です。私は、私たちのResourceDictionaryのための部分的なクラスを作成し、私は閉じるボタンのクリックイベントに処理コードの後ろに:

のResourceDictionary XAMLファイル:

<ResourceDictionary ... x:Class="MyNameSpace.WindowStyle"> 
    ... 
    <Style x:Key="WindowsGeneralStyle" TargetType="Window"> 
      <Setter Property="Template" > 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Window}"> 
         <Grid> 
          ... 
          <Button x:Name="closebtn" Click="CloseBTN_Clicked" ... /> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
</ResourceDictionary> 

とコードの後ろ:

namespace MyNameSpace 
{ 
    public partial class WindowStyle 
    { 
     private void CloseBTN_Clicked(object sender, RoutedEventArgs e) 
     { 
      Window.GetWindow(((FrameworkElement)e.Source)).Close(); 
     } 
    } 
} 

を、それは動作しますかなりよく!

0

{Binding Close}は現在DataContextCloseコマンドにバインドしようとすると、あなたはおそらく{x:Static ApplicationCommands.Close}ような何かをしたいです。

+0

H.B.私は "{x:Static ApplicationCommands.Close}"に変更しました。 –

+0

@AliAdl:docsから: '与えられたオブジェクトに対するコマンドの実装は必ずしも必要ではありません。多くの場合、コマンドの実装はアプリケーションライターの責任です。通常、それはまったく役に立たないので、おそらく '[CommandBinding']を使って' CanExecute'と 'Executed'メソッドにコマンドを接続する必要があります( http://msdn.microsoft.com/en-us/library/system.windows.input.commandbinding.aspx)。次に、これらのメソッドは、閉じる(ウィンドウを閉じることができるかどうかのステータスを、ボタンが無効かどうかに影響する) –

関連する問題