无法在单独的视图中找到ElementName的源

时间:2012-12-05 11:13:49

标签: wpf mvvm binding commandparameter

我在C#中的WPF应用程序使用了MVVM模式。我定义了两个用户控件:

  • LoginView
  • ProjectsView

两个用户控件都添加到主窗口并使用相同的视图模型。 LoginView包含PasswordBox定义如下:

<PasswordBox Name="passwordBox" IsEnabled={Binding PasswordEnabled} />

ProjectsView包含一个按钮定义如下:

<Button Content="Login" Command="{Binding ProjectLoginCommand}" IsEnabled={Binding ProjectLoginEnabled}" CommandParameter="{Binding ElementName=passwordBox}" />

启动应用程序时,似乎无法绑定元素名称passwordBox。错误消息是:

Cannot find source for binding with reference 'ElementName=passwordBox' [...]

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你的元素

<PasswordBox Name="passwordBox" IsEnabled={Binding PasswordEnabled} />

位于LoginView用户控件,但按钮

<Button Content="Login" Command="{Binding ProjectLoginCommand}" IsEnabled={Binding ProjectLoginEnabled}" CommandParameter="{Binding ElementName=passwordBox}" />

位于ProjectsView。问题是您想要从另一个用户控件的一个用户控件子元素访问。在我看来,在LoginView用户控件和ProjectsView用户控件中的“项目”用户界面中填充所有登录界面应该是更好的解决方案。