1

私がWPF/C#で作成しようとしているアプリには、上に「TV画面」タイプのパネルがあるレイアウトにかなりの数のボタンがあります(実際には民間航空機用のFMSエミュレーターです)。ボタンの多くはレイアウトを変更します。これは、テレビ画面上の多数のテキスト ボックスです。私の質問は次のとおりです。レイアウトをさまざまなクラス/ファイルにカプセル化し、さまざまなボタンの選択時に「テレビ画面」にロードする規定はありますか? つまり、ユーザーがフライト プラン ボタンを押すと、上の 355x355 ボックス (画面) のレイアウトが XAML "flight_plan" レイアウト/ファイル/クラスをロードします。各レイアウトには異なる TEXTBOX のサイズと場所があり、30 を超える異なる「ページ」があるため、それらをカプセル化することをお勧めします。

私は WPF と c# に非常に慣れていませんが、C++ で win アプリを作成し、Turbo C と OWL にさかのぼります。また、最近 Android/Java で作業していて機能が混乱しているために不可能なことをしようとしている可能性もあります。

前もって感謝します。

編集 @adityaswami89 と私を正しい軌道に乗せてくれた他のすべての人に感謝します, 私は解決策を見つけました. VS2012 の新しい「WPF ページ」を介してページを追加しました。それから「スクリーン」をナビゲーションフレームに変えて、そこからは本当にシンプルになりました。以下は、テスト用に作成した簡単なプロジェクトです。

    public partial class MainWindow : Window
    {
       NavRad navrad = new NavRad();
       FPlan fplan = new FPlan();

       public MainWindow() {..}

       private void Frame_Navigated_1(object sender, NavigationEventArgs e) {..}

       private void Button_Click_1(object sender, RoutedEventArgs e)
       {
           Screen_Frame.Navigate(fplan);
       }

       private void Button_Click_2(object sender, RoutedEventArgs e)
       {
           Screen_Frame.Navigate(navrad);
       }
4

2 に答える 2

1

さまざまなユーザー コントロール内のさまざまな UI レイアウト セットを抽象化し、UI ロジックに従ってそれらをロードできます。これを行う 1 つの方法は、MVVM フレームワークを使用することです。

ActivateItem(UILayoutViewModel);

そして、この呼び出しはどのメ​​ソッドからでも呼び出すことができます。

Caliburn Screens と Composition の詳細については、公式ソースを参照してください。

于 2013-07-23T02:18:52.603 に答える