2013-05-01 53 views
3

我有以下代碼將上下文菜單添加到UI上的文本框。用戶應該能夠調出上下文菜單並選擇要使用的新單元。因此,我的視圖模型中的CurrentUnits方法綁定到文本框。我想要一個由所有潛在單位填充的上下文菜單。因此,我的視圖模型中的單位方法返回單位選項的字符串[];如英寸,釐米,英尺,米等。當用戶選擇一個方法NewUnits_Click被調用。所有的工作都很好,但是當用戶選擇一個菜單選項時,contextmenu不會消失。然後像應用程序菜單欄一樣按屏幕上的其他位置將清除它。有沒有其他人看到這個問題,或者看到下面的代碼有問題。這似乎與我的ItemTemplate/DataTemplate有關,因爲手工創建一組菜單項可以很好地工作。選擇後ContextMenu不會消失。

<TextBlock Width="100" Text="{Binding CurrentUnits}" TextAlignment="Right"> 
     <toolkit:ContextMenuService.ContextMenu> 
      <toolkit:ContextMenu ItemsSource="{Binding Units}"> 
       <toolkit:ContextMenu.ItemTemplate> 
        <DataTemplate> 
         <toolkit:MenuItem Header="{Binding}" Click="NewUnits_Click" /> 
        </DataTemplate> 
       </toolkit:ContextMenu.ItemTemplate> 
      </toolkit:ContextMenu> 
     </toolkit:ContextMenuService.ContextMenu> 
    </TextBlock> 
+0

您是否嘗試過使用Tap事件? – Kenneth 2013-05-01 15:55:45

+0

我沒有看到Tap事件可用? – user2339952 2013-05-01 17:44:24

+0

你使用的是什麼版本?此事件應該可用。 – Kenneth 2013-05-01 18:07:29

回答

0

如果您在使用WPF時沒有使用MVVM,我強烈建議您開始這樣做。即使你不是,我建議,而不是綁定到點擊你,而是綁定在Command屬性,它需要一些實現ICommand。我認爲你正在獲得的行爲是有意的,WPF中的按鈕和菜單項旨在綁定到Commands,它不僅僅是WinForms 2.0。

另一種解決方案是隱藏代碼隱藏上下文菜單。也許this resource將幫助你實現這一目標。