Собственное свойство UserControl в WPF - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть пользовательский элемент управления с двумя сетками.Теперь я хочу получить сетку, которая имеет фокус, и выставить ее для моей модели вида.Как я могу сделать это в WPF?Я хочу заполнить свойство в моей модели представления именем Grid, которое имеет фокус.Кажется, это не так просто.

Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 05 сентября 2011

Вы действительно должны пересмотреть свой дизайн, если вы выставляете элементы пользовательского интерфейса или определенные части своей модели представления.Обычно ваша viewmodel не должна знать о каком-либо конкретном элементе пользовательского интерфейса.Что именно вы хотите сделать с именем элемента пользовательского интерфейса?Вы можете прослушать событие GotFocus в ваших двух сетках, таких как

<Grid x:Name="Grid1" GotFocus="OnGridGotFocus"/>
<Grid x:Name="Grid2" GotFocus="OnGridGotFocus"/>

и добавить этот метод в свой UserControl, в этом методе вы можете получить его через

private static void OnGridGotFocus(object aSender, RoutedEventArgs aE)
{
   string name = (string)(aSender as DependencyObject).GetValue(NameProperty);
}

, имя которого теперь можетзаписывается в DependencyProperty, который вы привязываете к своей модели представления.Но опять же, я все еще думаю, что вы не должны этого делать.

Если вы объясните, чего именно вы пытаетесь достичь, возможно, мы сможем вам лучше помочь.

...