Почему MenuItem не отправляет указанные параметры, а Button send - PullRequest
0 голосов
/ 02 декабря 2010
<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.когда я отлаживаю Converter для MenuItem, параметр values ​​содержит два объекта: DependencyProperty.UnsetValue (я не знаю, что это) и объект MyContextMenu.

А также как я могу передать SomeType в качестве параметра?Спасибо

1 Ответ

1 голос
/ 02 декабря 2010

MenuItems существуют во всплывающих окнах, которые находятся вне основного визуального дерева и поэтому не имеют такой же области имен, как окружающие элементы, такие как ваша кнопка.При попытке привязки привязка ElementName не может быть разрешена, поскольку элемент «Me» находится вне области имен MenuItem.

...