WPFでのフォーム継承の問題に関するいくつかの質問があります。 WPFフォームに視覚的継承がないことを読んだことがあります。 プロジェクトをベースフォームとして、他のフォームを継承して記述したいと思います。WPFフォーム継承問題
可能な解決策は、UserControl
を使用し、それを息子のフォーム内で使用することでした。 問題は、ベースのものを継承するすべての新しいフォームで何度も何度も定義しなければならないということです。
son-formで定義することなく別の方法で実装できますか?
WPFでのフォーム継承の問題に関するいくつかの質問があります。 WPFフォームに視覚的継承がないことを読んだことがあります。 プロジェクトをベースフォームとして、他のフォームを継承して記述したいと思います。WPFフォーム継承問題
可能な解決策は、UserControl
を使用し、それを息子のフォーム内で使用することでした。 問題は、ベースのものを継承するすべての新しいフォームで何度も何度も定義しなければならないということです。
son-formで定義することなく別の方法で実装できますか?
あなたはユーザーコントロール(あなただけのすべてのウィンドウの要素に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>
こんにちは、私はスタイルを使用できることを知っています。しかし、私はそれを見ると、ウィンドウの "スタイル"についてのすべてです。私は実際にコントロールを定義することはできません。私が間違っている? – user1250632
私が言ったように、テンプレートをオーバーライドしてコントロールを追加することができます。サンプルの私の編集を参照してください。 –
あなたは、WPF、右の窓ではなく、フォームを使用していることを実現していますか?記事[here](http://msdn.microsoft.com/en-us/library/system.windows.window.aspx)を参照してください。 – Bernard
BaseWindowを定義しないと、 "息子フォーム"を作成する代わりに、 "息子UserControls"を作成します。あなたが特定の "息子のUserControl"を表示する必要があるときは、次のようにします: 'var sonWindow = new BaseWindow {Content = new SonUserControl()};' –
そのオプションですが、実際にはデザインタイムに表示されません.iはオプション。ありがとう.. – user1250632