2012-03-07 45 views
-1

WPFでのフォーム継承の問題に関するいくつかの質問があります。 WPFフォームに視覚的継承がないことを読んだことがあります。 プロジェクトをベースフォームとして、他のフォームを継承して記述したいと思います。WPFフォーム継承問題

可能な解決策は、UserControlを使用し、それを息子のフォーム内で使用することでした。 問題は、ベースのものを継承するすべての新しいフォームで何度も何度も定義しなければならないということです。

son-formで定義することなく別の方法で実装できますか?

+0

あなたは、WPF、右の窓ではなく、フォームを使用していることを実現していますか?記事[here](http://msdn.microsoft.com/en-us/library/system.windows.window.aspx)を参照してください。 – Bernard

+0

BaseWindowを定義しないと、 "息子フォーム"を作成する代わりに、 "息子UserControls"を作成します。あなたが特定の "息子のUserControl"を表示する必要があるときは、次のようにします: 'var sonWindow = new BaseWindow {Content = new SonUserControl()};' –

+0

そのオプションですが、実際にはデザインタイムに表示されません.iはオプション。ありがとう.. – user1250632

答えて

0

あなたはユーザーコントロール(あなただけのすべてのウィンドウの要素にStyle="{StaticResource myWindowStyle}"を設定する必要があります)より少ないマークアップでこれを処理するためのスタイルを使用することができます。このスタイルを使用すると、ウィンドウのTemplateを上書きして、好きなクロームをウィンドウコンテンツの周りに置くことができます。あなたのsepcificウィンドウのコンテンツを表示する場合は、とContentControlを追加してください。

残念ながら、一般的なスタイルを設定するだけでベースWindowコントロールに適用されますので、あなたは、簡単にすべてのWindowsにこれを適用することはできませんし、アプリケーションのウィンドウのそれぞれがWindowから派生した型になります。

EDIT:あなたのウィンドウで、テンプレートのコントロールを指定したい場合は、あなたがあなたのスタイルで、次のような何かを行うことができます。

<Style x:Key="MyWindowStyle" TargetType="Window"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="Window"> 
     <StackPanel> 
      <Button>This button will appear on every window</Button> 
      <ContentControl Content="{TemplateBinding Content}" /> 
     </StackPanel> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 
+0

こんにちは、私はスタイルを使用できることを知っています。しかし、私はそれを見ると、ウィンドウの "スタイル"についてのすべてです。私は実際にコントロールを定義することはできません。私が間違っている? – user1250632

+0

私が言ったように、テンプレートをオーバーライドしてコントロールを追加することができます。サンプルの私の編集を参照してください。 –