Question

<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();
    }
}

Bouton cammand est exactement le même que MenuItem. quand je debug Converter pour MenuItem, les valeurs paramètre contient deux objets:. DependencyProperty.UnsetValue (Je ne sais pas ce qui est cela) et de l'objet myContextMenu

Et comment puis-je passer UnType en tant que paramètre? Merci

Était-ce utile?

La solution

MenuItems existent dans popups qui sont en dehors du principal arbre visuel et donc n'ont pas la même portée de nom que les éléments environnants, comme votre bouton. Lorsque vous essayez de lier, la liaison ElementName ne peut pas résoudre parce que l'élément « Me » est en dehors du champ du nom du MenuItem.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top