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

質問編集履歴

4

最終の動作コードへ更新

2019/04/16 05:30

投稿

Base
Base

スコア28

title CHANGED
File without changes
body CHANGED
@@ -31,7 +31,7 @@
31
31
  <ToolBar Margin="0,20,-0.333,0" Height="30">
32
32
  <ToggleButton IsChecked="{Binding ShowMeoDataOnly, Mode=TwoWay}">
33
33
  <ToggleButton.ContextMenu>
34
- <ContextMenu IsOpen="{Binding ShowMeoDataOnly, Mode=TwoWay}" PlacementTarget="{Binding RelativeSource={RelativeSource AncestorType=ToggleButton}}">
34
+ <ContextMenu DataContext="{StaticResource Proxy}" IsOpen="{Binding Data.ShowMeoDataOnly, Mode=TwoWay}">
35
35
  <MenuItem Command="{Binding Source={StaticResource Proxy}, Path=Data.MyCommand}">
36
36
  <MenuItem.Header>
37
37
  <TextBlock Text="実行可能状態にする"/>

3

頂いた情報によるコード更新

2019/04/16 05:30

投稿

Base
Base

スコア28

title CHANGED
File without changes
body CHANGED
@@ -16,8 +16,11 @@
16
16
  ### 該当のソースコード
17
17
 
18
18
  ```xmal
19
+ <Window.Resources>
20
+ <local:BindingProxy x:Key="Proxy" Data="{Binding}" />
21
+ </Window.Resources>
19
22
 
20
- <Grid>
23
+ <Grid>
21
24
  <StackPanel>
22
25
  <Menu x:Name="menu" HorizontalAlignment="Left" Height="24" VerticalAlignment="Top" Width="519" Margin="0,0,-0.333,0">
23
26
  <MenuItem Header="ファイル">
@@ -28,18 +31,18 @@
28
31
  <ToolBar Margin="0,20,-0.333,0" Height="30">
29
32
  <ToggleButton IsChecked="{Binding ShowMeoDataOnly, Mode=TwoWay}">
30
33
  <ToggleButton.ContextMenu>
34
+ <ContextMenu IsOpen="{Binding ShowMeoDataOnly, Mode=TwoWay}" PlacementTarget="{Binding RelativeSource={RelativeSource AncestorType=ToggleButton}}">
31
- <ContextMenu IsOpen="{Binding ShowMeoDataOnly, Mode=TwoWay}">
35
+ <MenuItem Command="{Binding Source={StaticResource Proxy}, Path=Data.MyCommand}">
32
- <MenuItem>
33
36
  <MenuItem.Header>
34
37
  <TextBlock Text="実行可能状態にする"/>
35
38
  </MenuItem.Header>
36
39
  </MenuItem>
37
- <MenuItem>
40
+ <MenuItem Command="{Binding Source={StaticResource Proxy}, Path=Data.MyCommand}">
38
41
  <MenuItem.Header>
39
42
  <TextBlock Text="移動する"/>
40
43
  </MenuItem.Header>
41
44
  </MenuItem>
42
- <MenuItem>
45
+ <MenuItem Command="{Binding Source={StaticResource Proxy}, Path=Data.MyCommand}">
43
46
  <MenuItem.Header>
44
47
  <TextBlock Text="ファイルから呼び出す"/>
45
48
  </MenuItem.Header>
@@ -51,6 +54,7 @@
51
54
  <StackPanel>
52
55
  <TextBlock Text="操作内容" VerticalAlignment="Center" />
53
56
  </StackPanel>
57
+ <!--<Path Width="10" Height="5" Stretch="Fill" Fill="Black" Data="F1 M0,0 L10,0 L5,10 Z " />-->
54
58
  <Border Width="8" />
55
59
  </WrapPanel>
56
60
 
@@ -91,6 +95,30 @@
91
95
 
92
96
  ```
93
97
 
98
+ ```BindingProxy
99
+
100
+ using System.Windows;
101
+
102
+ // BindingProxy.csを作成
103
+
104
+ public class BindingProxy : Freezable
105
+ {
106
+ protected override Freezable CreateInstanceCore()
107
+ {
108
+ return new BindingProxy();
109
+ }
110
+
111
+ public object Data
112
+ {
113
+ get { return (object)GetValue(DataProperty); }
114
+ set { SetValue(DataProperty, value); }
115
+ }
116
+
117
+ public static readonly DependencyProperty DataProperty =
118
+ DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null));
119
+ }
120
+ ```
121
+
94
122
  ### 試したこと
95
123
 
96
124
  1)原因は、下記のURLに乗っている事だというところまでは突き止めたが、

2

ご指摘頂いた点、修正。・どのような手順を取るとどうなるようにしたいのか ・今はどうなるのか

2019/04/16 02:46

投稿

Base
Base

スコア28

title CHANGED
@@ -1,1 +1,1 @@
1
- [WPF][MVVM] ToggleButton使用ContextMenu表示
1
+ [WPF][MVVM] ToggleButtonを押した時ContextMenu表示したい
body CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  こんばんは。
4
4
  WPF + Visual Studio2015にてトグルボタンのメニューを作成中です。
5
+
6
+ トグルボタンを押した時に、展開してメニューが表示するようにしたいです。
7
+ 今は、押しても何もメニューが展開されない状態です。
8
+ ViewModelでの、フラグの切り替えは出来ていますが、ContextMenuを展開するのにはどうしたら良いのかを調べています。
9
+  
5
10
  色々調べましたが、情報を探し出せなかった為、ご教授頂けますと幸いです。
6
11
 
7
12
  ### 発生している問題・エラーメッセージ

1

一部修正

2019/04/14 23:56

投稿

Base
Base

スコア28

title CHANGED
File without changes
body CHANGED
@@ -46,7 +46,6 @@
46
46
  <StackPanel>
47
47
  <TextBlock Text="操作内容" VerticalAlignment="Center" />
48
48
  </StackPanel>
49
- <Path Width="10" Height="5" Stretch="Fill" Fill="Black" Data="F1 M0,0 L10,0 L5,10 Z " />
50
49
  <Border Width="8" />
51
50
  </WrapPanel>
52
51