Присвоение значения моей модели представления из свойства зависимостей из xaml в пользовательском элементе управления - PullRequest
0 голосов
/ 25 апреля 2011

Мне нужно захватить событие нажатия клавиши, чтобы получить значение ключа из моего пользовательского открытого класса DataGrid ExtendedDataGrid: DataGrid {} и запустить его в моей модели представления с нажатой клавишей.Чтобы быть точным, я хочу проверить, нажал ли кто-то клавишу Delete, а затем удалить запись из текущего выбранного без использования кода, потому что вся моя логика в моей модели представления.

Мой элемент управления ExtendedDataGrid является новым иЯ создал коллекцию GridColumns (мое собственное определение класса), которая устанавливает столбцы из модели представления и работает там, где модель представления отправляет значение в DependencyProperty.Однако на этот раз я хочу захватить ввод с клавиатуры из PreviewKeyDown и отправить его в модель представления.

Я создал метод в своем классе ExtendedDataGrid и поместил в конструктор: PreviewKeyDown += OnKeyDown;Это запускает событие, как ожидалось.Я создал DependencyProperty:

public static readonly DependencyProperty KeyDownValueProperty =
    DependencyProperty.Register("KeyDownValue", typeof(Key), typeof(ExtendedDataGrid), null, null);

Затем я создал метод:

    private void OnKeyDown(object Sender, KeyEventArgs Args)
    {
        SetValue(KeyDownValueProperty, Args.Key);
    }

Затем я объявил оболочку свойства:

    [Bindable(true)]
    public Key KeyDownValue
    {
        get
        {
            return (Key)GetValue(KeyDownValueProperty);
        }

        set
        {
            SetValue(KeyDownValueProperty, value);
        }
    }

Последнее, что я сделалбыло добавить в XAML, KeyDownValue = "{Binding Path = KeyThatWasPressed}".Это объявлено как открытое свойство в моей модели представления типа Key.

Я надеялся, что нажатие клавиши вызовет событие, которое я создал, и затем отправит значение в Свойство Dependency.и пусть он уведомит об изменении / значении в моей модели представления, чего он не делает.

Как только я получу это, все остальное встанет на свои места, так как я быстро учусь.Я просто скучаю по некоторым основам здесь.Любая помощь будет очень.Как только я выучу достаточно, я вполне могу начать отвечать на другие вопросы новичка на эту тему.

1 Ответ

1 голос
/ 25 апреля 2011

Когда вы привязываете виртуальную машину к ExtendedDataGrid, попробуйте установить режим привязки на TwoWay

KeyDownValue="{Binding Path=KeyThatWasPressed, Mode=TwoWay}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...