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

回答編集履歴

2

見直しキャンペーン中

2023/08/12 15:26

投稿

TN8001
TN8001

スコア10108

answer CHANGED
@@ -55,4 +55,4 @@
55
55
  くどいですが、ここからずれているように思います。
56
56
  これをしなければ`Command="{Binding ClickCommand}"`とするだけだったのに、わざわざややこしいことをしているように感じます。
57
57
 
58
- `DataTemplate`で`ViewModel`から`UserControl`を起こすのならわかるのですが、それぞれ何の関連もなく`ParentPageVM`・`ChildControlVM`・`GrandchildButtonVM`を作って嬉しい状況が思いつきません。
58
+ `DataTemplate`でViewModelから`UserControl`を起こすのならわかるのですが、それぞれ何の関連もなく`ParentPageVM`・`ChildControlVM`・`GrandchildButtonVM`を作って嬉しい状況が思いつきません。

1

見直しキャンペーン中

2023/07/23 09:13

投稿

TN8001
TN8001

スコア10108

answer CHANGED
@@ -1,58 +1,58 @@
1
- あれこれやっていたらこれで動きました。
2
- `ElementName`だとうまくいかないようです(なんでかはわかりません)
3
-
4
- ```xaml
5
- <Page
6
- x:Class="Questions300833.MainPage"
7
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
8
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
9
- xmlns:local="using:Questions300833"
10
- x:Name="Main_Page"
11
- Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
12
- <Page.DataContext>
13
- <local:ParentPageViewModel />
14
- </Page.DataContext>
15
- <Grid>
16
- <local:ChildControl Margin="5" OnClickCommand="{x:Bind ((local:ParentPageViewModel)Main_Page.DataContext).ClickCommand}" />
17
- </Grid>
18
- </Page>
19
- ```
20
-
21
- ```xaml
22
- <UserControl
23
- x:Class="Questions300833.ChildControl"
24
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
25
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
26
- xmlns:local="using:Questions300833"
27
- x:Name="Child_Control">
28
- <UserControl.DataContext>
29
- <local:ChildControlViewModel />
30
- </UserControl.DataContext>
31
- <Grid>
32
- <Grid.RowDefinitions>
33
- <RowDefinition />
34
- <RowDefinition />
35
- </Grid.RowDefinitions>
36
- <Grid.ColumnDefinitions>
37
- <ColumnDefinition />
38
- <ColumnDefinition />
39
- </Grid.ColumnDefinitions>
40
- <local:GrandchildButton
41
- HorizontalAlignment="Stretch"
42
- VerticalAlignment="Stretch"
43
- Background="Blue"
44
- Command="{x:Bind ((local:ChildControl)Child_Control).OnClickCommand}" />
45
-
46
- <!-- 省略 -->
47
- </Grid>
48
- </UserControl>
49
- ```
50
-
51
- ---
52
-
53
- > 独自のViewModelを持つUserControl
54
-
55
- くどいですが、ここからずれているように思います。
56
- これをしなければ`Command="{Binding ClickCommand}"`とするだけだったのに、わざわざややこしいことをしているように感じます。
57
-
1
+ あれこれやっていたらこれで動きました。
2
+ `ElementName`だとうまくいかないようです(なんでかはわかりません)
3
+
4
+ ```xml
5
+ <Page
6
+ x:Class="Questions300833.MainPage"
7
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
8
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
9
+ xmlns:local="using:Questions300833"
10
+ x:Name="Main_Page"
11
+ Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
12
+ <Page.DataContext>
13
+ <local:ParentPageViewModel />
14
+ </Page.DataContext>
15
+ <Grid>
16
+ <local:ChildControl Margin="5" OnClickCommand="{x:Bind ((local:ParentPageViewModel)Main_Page.DataContext).ClickCommand}" />
17
+ </Grid>
18
+ </Page>
19
+ ```
20
+
21
+ ```xml
22
+ <UserControl
23
+ x:Class="Questions300833.ChildControl"
24
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
25
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
26
+ xmlns:local="using:Questions300833"
27
+ x:Name="Child_Control">
28
+ <UserControl.DataContext>
29
+ <local:ChildControlViewModel />
30
+ </UserControl.DataContext>
31
+ <Grid>
32
+ <Grid.RowDefinitions>
33
+ <RowDefinition />
34
+ <RowDefinition />
35
+ </Grid.RowDefinitions>
36
+ <Grid.ColumnDefinitions>
37
+ <ColumnDefinition />
38
+ <ColumnDefinition />
39
+ </Grid.ColumnDefinitions>
40
+ <local:GrandchildButton
41
+ HorizontalAlignment="Stretch"
42
+ VerticalAlignment="Stretch"
43
+ Background="Blue"
44
+ Command="{x:Bind ((local:ChildControl)Child_Control).OnClickCommand}" />
45
+
46
+ <!-- 省略 -->
47
+ </Grid>
48
+ </UserControl>
49
+ ```
50
+
51
+ ---
52
+
53
+ > 独自のViewModelを持つUserControl
54
+
55
+ くどいですが、ここからずれているように思います。
56
+ これをしなければ`Command="{Binding ClickCommand}"`とするだけだったのに、わざわざややこしいことをしているように感じます。
57
+
58
58
  `DataTemplate`で`ViewModel`から`UserControl`を起こすのならわかるのですが、それぞれ何の関連もなく`ParentPageVM`・`ChildControlVM`・`GrandchildButtonVM`を作って嬉しい状況が思いつきません。