2010-12-02 68 views
0
<MenuItem Command="local:CommandLibrary.RegisterServiceCommand"> 
    <MenuItem.CommandParameter> 
     <MultiBinding Converter="{StaticResource TrayWindowViewModelConverterResource}"> 
      <MultiBinding.Bindings> 
       <Binding ElementName="Me" /> 
       <Binding FallbackValue="Parser" /> 
      </MultiBinding.Bindings> 
     </MultiBinding> 
    </MenuItem.CommandParameter> 
</MenuItem> 

public class TrayWindowViewModelConverter : IMultiValueConverter { 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { 
     var viewModel = new Window1ViewModel(); 

     foreach (var obj in values) { 
      if (obj is Window) 
       viewModel.Caller = obj as Window; 
      else if (obj is string) 
       viewModel.ServiceName = obj.ToString(); 
     } 

     return viewModel; 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { 
     throw new NotImplementedException(); 
    } 
} 

按鈕cammand與MenuItem完全相同。當我調試MenuItem的Converter,值參數包含兩個對象:DependencyProperty.UnsetValue(我不知道這是什麼)和MyContextMenu對象。爲什麼MenuItem不發送指定參數,但按鈕發送

而且我該如何傳遞SomeType作爲參數? 謝謝

回答

1

MenuItems存在於主視覺樹之外的彈出窗口中,因此不具有與周圍元素相同的名稱範圍,如Button。嘗試綁定時,ElementName綁定無法解析,因爲「Me」元素在MenuItem的名稱範圍之外。

+0

謝謝約翰,但什麼是解決方案或解決方法? – Sadegh 2010-12-02 14:56:56