首页 > 解决方案 > 无法通过依赖属性从 ViewModel 访问控制方法

问题描述

我想在 ViewModel 中调用Webview2控件的方法。

我在这篇文章中 引用了实现(Command Chaining ):<br /> Access a Control Method from a ViewModel

我在我的 WPF 应用程序中模仿了这个实现。

首先,我创建了一个继承自 WebView2 类的“ CustomWebView
”类, 并添加了一个名为“ GoBackCommand ”的依赖属性

    public class CustomWebView : WebView2
    {
       public ICommand GoBackCommand
       {
           get { return (ICommand)GetValue(GoBackCommandProperty); }
           set { SetValue(GoBackCommandProperty, value); }
       }

       public static readonly DependencyProperty GoBackCommandProperty =
           DependencyProperty.Register(
               "GoBackCommand", typeof(ICommand), typeof(CustomWebView), new PropertyMetadata(null));


       public CustomWebView()
       {
           GoBackCommand = new RelayCommand(() =>
           {
               this.GoBack();
           });
       }
   }

其次,我在 ViewModel 类中添加了一个属性“ GoBackCommand ”

    private ICommand goBackCommand;
    public ICommand GoBackCommand
    {
        get { return goBackCommand; }
        set 
        { 
            goBackCommand = value;
            OnPropertyChanged(nameof(GoBackCommand));
        }
    }

我想将“GoBackCommand”从控件绑定到 ViewModel。(一种来源方式)

所以在 Xaml 代码中,我这样写:

<ctrl:CustomWebView Source = "{Binding HtmlPath}"  GoBackCommand="{Binding GoBackCommand, Mode=OneWayToSource}"  />

但它不起作用。

GoBackCommand在 ViewModel中始终设置为 null。

为什么不起作用?这个实现有什么问题吗?</p>

非常感谢。

标签: c#wpfdata-bindingwpf-controlsdependency-properties

解决方案


推荐阅读