WPF中UserControl的自有属性

时间:2011-09-05 13:07:37

标签: wpf user-controls viewmodel

我有一个带有2个网格的用户控件。现在我希望能够检索具有焦点的网格并将其公开给我的视图模型。我怎么能在WPF中这样做? 我想在我的视图模型中使用具有焦点的Grid的名称填充属性。这似乎并不容易。

有人可以帮忙吗?

THX!

1 个答案:

答案 0 :(得分:0)

如果要将UI元素或特定部分暴露给您的视图模型,您真的应该重新考虑您的设计。通常,您的viewmodel不应该知道任何特定的ui元素。你究竟想用ui元素的名字做什么?您可以在两个网格上收听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。但是,我仍然认为你不应该这样做。

如果您解释一下您想要达到的目标,也许我们可以帮助您更好。