C#中的我的WPF应用程序使用MVVM模式。还有我已经定义了两个用户控件:无法在单独的视图中找到ElementName的源
- 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' [...]
我该如何解决这个问题?
为什么你需要一个PasswordBox控件作为你的CommandParameter? –
单击按钮时,我需要密码值(PasswordBox.Password)。但是由于安全原因,不可能直接绑定它。这就是为什么几篇文章提出将完整控制作为命令参数传递,然后访问PasswordBox.Password。 –
为什么不尝试下面的代码:PasswordBox s = sender作为PasswordBox; ViewModel.Password = s.Password;为PasswordBox_PasswordChanged事件处理程序 –