Используя DataContext родителя (WPF - Привязка Команды Динамического меню)

Используйте обе руки (и все десять пальцев).

Чтобы максимизировать скорость печати, вам нужно использовать противоположный мизинец для shift / ctrl и т. Д., И вы хотите свести к минимуму количество времени, которое вы должны «вернуть» в исходное положение. Мое самое большое увеличение в наборе текста при кодировании было в том, чтобы по-настоящему выучить сочетания клавиш в моей IDE, поскольку это устранило относительно медленный процесс использования мыши.

30
задан Matt 25 October 2015 в 23:52
поделиться

4 ответа

Если вам нужно грязное решение, нарушающее MVVM, установите для кнопки Tag = "{Binding}" и обработайте событие Click. В обработчике событий вызовите команду в модели ViewModel.

5
ответ дан 27 November 2019 в 23:06
поделиться

Ok, then what about modifying your data item class so that it has a property referencing to the whole model view?

If your ItemsSource is of type ObservableCollection then modify DataItem type like this:

public class DataItem
{
    public BusinessObject Value { get; set; }

    private ModelView modelView;

    public ModelView ModelView
    {
        get
        {
            return modelView;
        }
    }

    public DataItem(ModelView modelView)
    {
        this.modelView = modelView;
    }
}
3
ответ дан 27 November 2019 в 23:06
поделиться

Используйте приведенную ниже привязку для команды вашей кнопки:

{Binding DataContext.CommandName, 
         RelativeSource={RelativeSource FindAncestor, 
                         AncestorType={x:Type MyUserControl}}}

Это укажет ему найти ваш UserControl и использовать его DataContext.

89
ответ дан 27 November 2019 в 23:06
поделиться

RelativeSource работает, но я не думаю Правильно позволять элементам управления перемещаться по свойствам друг друга. Странно, что кнопка, размещенная внутри представления элемента, что-то делает с внешним источником данных, а не с привязанным элементом. Возможно, вам потребуется пересмотреть структуру программного кода.

2
ответ дан 27 November 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: