- MainWindow.xaml 具有视图模型 MainWindowViewModel。
- MainWindow.xaml 有一个名为 CustomBrowserControl.xaml 的嵌套用户控件
- CustomBrowserControl.xaml 有一个命名元素 webBrowser。
MainWindowViewModel 有一个需要引用 webBrowser 的命令。
我如何通过参考?
我想出的解决方案
根据 EthicalLogics 和 sa_ddam213 的响应,是的,在我的 MainWindow 后面的代码中,如果我命名了用户控件(在 xaml 中,添加属性 x:Name="something"),然后我可以引用用户控件对象。然后我可以将该引用传递给 MainWindowViewModel。这显然也是不好的做法,因为它破坏了 MVVM。
所以我做了什么
在我的用户控件中,我创建了两个新的依赖属性,如下所示:
public static readonly DependencyProperty TakePictureCommand = DependencyProperty.Register("TakePicture", typeof(ICommand), typeof(BrowserControl));
public ICommand TakePicture
{
get { return (ICommand)GetValue(TakePictureCommand); }
set { SetValue(TakePictureCommand, value); }
}
现在在我的 MainWindow.xaml 中,我放置了一个按钮。我能够使用以下 xaml 将按钮绑定到 TakePicture 命令:
<Window>
<Button Content="Take Picture" Command="{Binding ElementName=browserControl, Path=DataContext.TakePicture}" FocusManager.IsFocusScope="True" ...>
<myUserControls:BrowserControl x:Name="browserControl" ... />
</Window>
这样我根本不需要传递引用,并且可以让用户控件中的命令/方法被主窗口上的操作调用。
非常感谢回复的人!!