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事件處理程序 –