1

WPFから始めていますが、ウィンドウから別のウィンドウに継承する方法が見つかりません。

今、私はWinFormで新しいアプリケーションを開始しています。このアプリケーションでは、オブジェクトを追加/編集/削除/参照するための汎用ウィンドウを作成しました。そのため、ウィンドウにはいくつかのボタン、ヘッダー、フッター、背景色などがあります。次に、このウィンドウを各オブジェクトのウィンドウに継承します。

したがって、何もしなくても、ほぼ全ページの準備ができています。

私の質問は...WPFでも同じことができますか?なぜなら、Winformでのアプリの実行をやめ、WPFでの作業を開始したいからです。

WPFでこれを行う方法を探すのに多くの時間を費やしていますが、方法が見つかりません。WPFは外観を継承できないことがわかりました。

カスタムコントロールまたはユーザーコントロールを見ましたが、画面を完成させるために継承するコントロール内に物を置く必要があります。

4

2 に答える 2

3

はい、可能です。新しいクラスをパブリックとして宣言する必要があります(実際には、両方のクラスが同じリーチを持つようにするためにこれを行います)

public class newWindow : Window

次に、新しいクラスから継承します

public partial class TestClass : newWindow

次に、TestClassxamlファイルを変更します。

<base:newWindow>
xmlns:local="clr-namespace:YourNameSpace"
xmlns:base="clr-namespace:YourNameSpace"
</base:newWindow>
于 2015-12-24T08:38:26.987 に答える
0

WPFでは、この方法で視覚的に継承することはできません。

から継承するカスタムクラスを作成し、すべてのウィンドウに表示するさまざまなボタンのプロパティをWindow追加することをお勧めします。RelayCommand必要なロジックRelayCommandを実行する仮想メソッドを呼び出します。

次に、すべてのウィンドウに含めるボタンを含むヘッダーまたはフッターセクションを含むカスタムのControlTemplateカスタムを作成します(デフォルトにすると、すべてのカスタムウィンドウでこのテンプレートが使用されます) 。Window次に、DataBindこれらのボタンをCommandカスタムウィンドウクラスのsに移動できます(おそらくRelativeSource Selfバインディングを介して)。

このアプローチにより、「共有」フッターを持つがコンテンツが異なるウィンドウを作成できるようになります。WPFを初めて使用する場合は、少し注意が必要です。もう1つのアプローチはUserControl、ヘッダー/フッター機能を実装し、ボタンアクションのイベントを発生させるを作成し、それをすべてのウィンドウにドロップすることです。しかし、私の意見では、このアプローチではWPFの機能、特にコントロールの見栄えの悪い性質を活用できません。

于 2012-08-03T22:58:09.207 に答える