teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

質問文変更につき回答内容を変更しました。

2016/12/08 04:40

投稿

twyujiro15
twyujiro15

スコア217

answer CHANGED
@@ -1,19 +1,12 @@
1
- ```XAML
2
- <Window x:Class="SampleApp.MainWindow"
3
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5
- xmlns:local="clr-namespace:SampleApp"
6
- Title="MainWindow" Height="100" Width="200">
7
- <Grid>
8
- <Button Content="Click me." />
1
+ 自分なら A と B をあらかじめ配置、Visibility.Collapsed にしておいて、
2
+ ボタンクリックなどのタイミングで Style.Triggers で
9
- </Grid>
3
+ Visibility を入れ替えるようにします。
10
- </Window>
11
- ```
12
4
 
13
- プレフィックスってもしかして上記コードの
14
- 「xmlns:local="clr-namespace:SampleApp"」の「local」や「SampleApp」のことでしょうか。
15
- そうったこと動的にはできません。
5
+ A および B の内容が大き場合
16
-
17
- おそらくこ疑問は何かの機能を実現しようとしてこのアイにたどり着たんだと思いますが
6
+ MainWindow のデータコンテキスト CurrentViewModel みたいなプロパティを用意し
18
- その実現しようしている機能のもの質問たほうが
7
+ A B れぞれに ViewModel 用意ます。
8
+ ContentControl の Content プロパティに CurrentViewModel をバインドし、
9
+ ボタンクリックのコマンドから CurrentViewModel を A から B、B から A 用のものに入れ替えます。
10
+ CurrentViewModel をバインドされた ContentControl はそのままでは UI を表示できないので、
19
- 解決やすいと思います。
11
+ App.Resources などに DataTemplate を定義
12
+ A の ViewModel のときは A、B の ViewModel のときは B が表示されるようにします。