2016-03-04 73 views
1

我有一個簡單的ContextMenu使用MahApps.Metro沒有任何額外的樣式一個奇怪的問題。將光標移動到文本的頂部或稍微圍繞它時,沒有問題。但是當它離得更遠時,仍然在ContextMenu界限內,Cursor不再位於MenuItem之上。除了關閉ContextMenu外,現在單擊也不會導致任何操作。WPF MenuItem沒有填充可用的ContextMenu空間

enter image description here enter image description here

<ContextMenu ItemsSource="{Binding ContextItems}"> 
    <ContextMenu.ItemTemplate> 
     <DataTemplate> 
      <MenuItem Header="{Binding Text}" Command="{Binding Command}"/> 
     </DataTemplate> 
    </ContextMenu.ItemTemplate> 
</ContextMenu> 

我在做什麼錯?爲什麼MenuItem不使用可用空間?

+1

我剛剛發現了自己的這個問題。在我看來,出於某種原因,它看起來實際上是添加了兩個菜單項,一個作爲另一個的內容。這就是爲什麼它們是以中心(而不是默認的左對齊)爲中心的,而且按壓沒有被正確處理 - 因爲它將事件放在包含實際項目的奇怪空白處。這非常令人沮喪。尚未找到解決方案。 – Joe

回答

4

如果您ContextItems持有具有的ViewModels的集合,然後我想這能幫助你(未測試):

<ContextMenu ItemsSource="{Binding ContextItems}"> 
    <ContextMenu.ItemContainerStyle> 
     <Style TargetType="MenuItem"> 
      <Setter Property="Header" Value="{Binding Text}" /> 
      <Setter Property="Command" Value="{Binding Command}" /> 
     </Style> 
    </ContextMenu.ItemContainerStyle> 
</ContextMenu> 

命令和文本應該是視圖模型對象的屬性。

+0

修好了,非常感謝! –

1

我還沒用過MahApps.Metro。雖然你可以覆蓋這樣的模板

   <ContextMenu.ItemTemplate> 
       <DataTemplate> 
         <MenuItem Header="{Binding Text}" Command="{Binding Command}"/> 
         <MenuItem.Template> 
          <ControlTemplate> 
            <ContentPresenter Content="{Binding Header,RelativeSource={RelativeSource TemplatedParent}}"> 
            </ContentPresenter> 
          </ControlTemplate> 
         </MenuItem.Template> 
         </MenuItem> 
       </DataTemplate> 
      </ContextMenu.ItemTemplate> 

我希望這會有所幫助。

+0

是的,菜單項周圍的邊框消失了 - 是否還有一種方法來拉伸項目以適應正常大小的上下文菜單?即使不,thx爲快速回復! –

+0

剛剛發現一個問題:現在只有文本是可點擊的,所有空格都不會使命令變成三分之一.... –

+0

嘗試將ContentPresenter包裝爲網格,如。 – ethicallogics