2016-08-24 17 views
0

私はcontextmenuに非常に奇妙な問題があります。Contextmenu StaysOpenプロパティがまったく機能していません

<StackPanel> 
    <StackPanel.ContextMenu> 
     <ContextMenu x:Name="CMenu" StaysOpen="True" > 
      <MenuItem Header="Item 1" /> 
      <MenuItem Header="Item 2"> 
       <MenuItem Header="Sub item 1" /> 
       <MenuItem Header="Sub item 2" /> 
       <MenuItem Header="Sub item 3" /> 
       <MenuItem Header="Sub item 4" /> 
      </MenuItem> 
      <MenuItem Header="Item 3" /> 
      <MenuItem Header="Item 4" /> 
     </ContextMenu> 
    </StackPanel.ContextMenu> 
    <Label Content="ContextMenu Test" /> 
    <Button Content="ClickMe" Click="Button_Click" /> 
</StackPanel> 

ただし、コンテキストメニューの外のどこかをクリックするとすぐに、staysopenをtrueに設定しました。このプロパティは何のために使われますか?コンテキストメニューが閉じないようにするにはどうすればよいですか? (clickmeボタンをクリックすると、それは常に真だ、StaysOpen状況をトレース)

+0

Hmm:http://stackoverflow.com/a/20370672/424129 –

+0

@EdPlunkett私のケースは異なります。メニュー項目をクリックしたときにコンテキストメニューを開いたままにしたくありません。閉じても大丈夫です。私はちょうど私がそのコンテンツの外をクリックすると、メニューを閉じることを望んでいない。 – Pharaz

+0

それは同じ意味です:閉じないようにし、開いたままにする必要があります。 ポップアップを使用して、手動で開閉する必要があるときに制御します。 –

答えて

0

は、私はあなたの代わりにポップアップを使用する必要があるとします

<StackPanel> 
     <Popup IsOpen="True" 
       StaysOpen="True" 
       PlacementTarget="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Panel}}}"> 
      <ListBox> 
       <ListBoxItem Content="1" /> 
       <ListBoxItem Content="2" /> 
      </ListBox> 
     </Popup> 
     <Label Content="ContextMenu Test" /> 
     <Button Content="ClickMe" /> 
    </StackPanel> 

それでも、あなたはあなたの窓の動きに応じて、このポップアップの場所のための世話をする必要があります。でも、クリックした後、メニューを開くを保つためにそのXとY

+0

私はすでにポップアップの使用を検討していましたが、実際のコンテキストメニューのようにしたいので、私はコンテキストメニューのカスタムスタイルを使用しているので、混乱したくありません。 – Pharaz

+0

ここには選択肢がありません。元のコンテキストメニューが閉じられるように作成されているため、ポップアップから独自の「コンテキストメニュー」を実装する必要があります。 –

+0

だから、コンテキストメニューのStaysOpenプロパティの目的は何ですか?何か不足していますか? – Pharaz

0

を再定義し、あなたが各メニュー項目

StaysOpenOnClick="True" 

をtrueにプロパティの下に設定しなければならないことを意味ので、あなたの要件のために、あなたのコードは以下のようになります:

<StackPanel> 
     <StackPanel.ContextMenu> 
      <ContextMenu x:Name="CMenu" StaysOpen="True" > 
             <MenuItem Header="Item 1" StaysOpenOnClick="True"/> 
        <MenuItem Header="Item 2" StaysOpenOnClick="True"> 
         <MenuItem Header="Sub item 1" StaysOpenOnClick="True"/> 
         <MenuItem Header="Sub item 2" StaysOpenOnClick="True"/> 
         <MenuItem Header="Sub item 3" StaysOpenOnClick="True"/> 
         <MenuItem Header="Sub item 4" StaysOpenOnClick="True"/> 
        </MenuItem> 
        <MenuItem Header="Item 3" StaysOpenOnClick="True"/> 
        <MenuItem Header="Item 4" StaysOpenOnClick="True"/> 

      </ContextMenu> 
     </StackPanel.ContextMenu> 
     <Label Content="ContextMenu Test" /> 
     <Button Content="ClickMe" Click="Button_Click" /> 
    </StackPanel> 
+0

menuitemでStaysOpenOnClickをtrueに設定すると、menuitemがクリックされたときにコンテキストメニューが閉じず、コンテキストメニューの外をクリックしても閉じます。 – Pharaz

関連する問題