Почему Menuitem не отправляет указанные параметры, а отправка кнопки

StackOverflow https://stackoverflow.com/questions/4332895

Вопрос

<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, параметр значений содержит два объекта: DeperialProperty.unsetValue (я не знаю, что это такое) и объект MyContextMenu.

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

Это было полезно?

Решение

В всплывающих окнах существуют Menuitems, которые находятся за пределами основного визуального дерева, и поэтому не имеют такого же имени, как окружающие элементы, как ваша кнопка. При попытке привязать, привязка ElementName не может решить, потому что элемент «я» находится вне сферы имени Menuitem.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top