控件名称在设计时找到,但在构建时不存在

时间:2018-03-07 14:48:08

标签: c# wpf visual-studio-2017

所以我在一个窗口中有这个XAML并命名控件MyBrowser

<Grid>
    <WindowsFormsHost>            
        <forms:WebBrowser Name="MyBrowser"  ScriptErrorsSuppressed="True"/>
    </WindowsFormsHost>
</Grid>

在我传递Uri后面的代码中显示。

public partial class AuthWindow2 : Window
{
    public AuthWindow2(Uri uri)
    {
        InitializeComponent();
        this.MyBrowser.Url = uri;            
   }
}
  

键入此intellisense时会找到受控名为MyBrowser的名称   没有任何问题,但在构建时,它说:

     

'AuthWindow2'不包含'MyBrowser'的定义,不包含   扩展方法'MyBrowser'接受类型的第一个参数   可以找到'AuthWindow2'(你是否错过了使用指令或者   装配参考?)

这似乎很基本,但我无法弄清楚为什么这么简单的事情不起作用。

如果我命名Grid或WindowsFormsHost控件,我可以访问它们并构建没有任何错误。

2 个答案:

答案 0 :(得分:2)

WebBrowser不是FrameworkElement,因此设置其Name属性不会在MainWindow类中生成字段。

您必须使用x:Name代替Name才能获得生成的字段:

<forms:WebBrowser x:Name="MyBrowser" .../>

答案 1 :(得分:1)

Name更改为WebBrowser的x:Name

<forms:WebBrowser x:Name="MyBrowser" ScriptErrorsSuppressed="True" />