سؤال

<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 ، تحتوي معلمة القيم على كائنين: DependencyProperty.UnsetValue (لست على علم بما هذا) وكائن MyContextMenu.

وأيضًا كيف يمكنني تمرير Sometype كمعلمة؟ شكرًا

هل كانت مفيدة؟

المحلول

توجد menuitems في المنبثقة التي تقع خارج الشجرة المرئية الرئيسية ، وبالتالي لا تملك نفس نطاق الاسم مثل العناصر المحيطة ، مثل الزر الخاص بك. عند محاولة الربط ، لا يمكن حل ملزمة elementName لأن عنصر "أنا" خارج نطاق اسم Menuitem.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top