2010-12-02 72 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