我在C#中的WPF应用程序使用了MVVM模式。我定义了两个用户控件:
两个用户控件都添加到主窗口并使用相同的视图模型。 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' [...]
我该如何解决这个问题?
答案 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
用户控件中的“项目”用户界面中填充所有登录界面应该是更好的解决方案。