質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

6903閲覧

表示するUserControlをプロパティによって切り替えたい

BluOxy

総合スコア2663

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2018/07/18 12:00

編集2018/07/19 08:13

###最初に
ViewModel側でプロパティを定義し、
View側で表示するUserControlをプロパティの状態によって変えようと考えています。

ペイントで書いた超雑な絵ですがイメージ図

イメージ説明

###試してみたこと①
複数のUserControlを同一箇所にソース上で記載し、

  • 表示するUserControlのVisibillityをVisible
  • 表示しないUserControlのVisibillityをCollapsed

にすることで要素の領域を取らない形にすれば、UserControlの切り替えは可能ですが
もっとうまいやり方があるのかな…と

###試してみたこと②
とりあえず行き当たりばったりで調べて以下のようなソースになりました。

XAML

1<!--略--> 2 <UserControl.Resources> 3 <DataTemplate x:Key="A"> 4 <controls:hoge /> 5 </DataTemplate> 6 <DataTemplate x:Key="B"> 7 <controls:fuga/> 8 </DataTemplate> 9 <DataTemplate x:Key="C"> 10 <controls:piyo /> 11 </DataTemplate> 12 </UserControl.Resources> 13 14 <UserControl ContentTemplate="{StaticResource A}" Content="{Binding}"/> 15<!--略-->

この実装では、Aに割り当てられているhogeのUserControlが表示されました。

###やりたいこと
ノリとしては、試してみたこと②に記載したソース内に書かれている
"{StaticResource A}"Aの部分をBindingして、ViewModelから
表示を決められる様にしたいです。

何か思いつきがありましたらご教授ください。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ebiryo

2018/07/19 06:49

「UserControlのVisibillityを表示するUserControl以外の VisibillityをCollapsedにしてあげる方法」ってどういう意味ですか??
BluOxy

2018/07/19 07:44

読み直したら変な文章になっていました。修正したのでご確認お願いします。
guest

回答1

0

ベストアンサー

通常この手のViewの切替はContentControlを用いると思います。以下辺り参考になるのではないでしょうか(他にも色々あると思います)

WPF4.5入門 その47 「コンテンツモデル」

投稿2018/07/19 07:57

ebiryo

総合スコア797

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BluOxy

2018/07/20 00:25

貼っていただいた記事からDataTemplateSelectorなるクラスがあるとのことだったので調べた結果、 以下の記事を発見したため、参考にしました。 http://nineworks2.blog.fc2.com/blog-entry-32.html 試した結果、作れました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問