【发布时间】:2011-03-16 19:15:23
【问题描述】:
大家好, 希望有人有更新鲜的眼光,可以帮助我在这里查明问题,我正在尝试使用 prism 和 MVVM 模式创建一个小应用程序,到目前为止,一切都运行良好,我的命令与参数一起正常触发,但是,此处的 TextBlock 未按应有的方式从其视图模型绑定到 CurrentUserKey 属性。
有人有什么想法吗? 提前谢谢...
LoginView.xaml(为简洁起见,仅提供相关部分) ...
<Grid DataContext="{Binding Path=., Source={StaticResource viewModel}}">
<Grid Margin="10">
<Label VerticalAlignment="Center" HorizontalAlignment="Right">Enter your Key:</Label>
<TextBlock Name="txtUserKey" Text="{Binding Path=CurrentUserKey}" Margin="2" />
<Button cal:Click.Command="{Binding GenericButtonClick}" cal:Click.CommandParameter="7">7</Button>
<Button cal:Click.Command="{Binding GenericButtonClick}" cal:Click.CommandParameter="8">8</Button>
<Button cal:Click.Command="{Binding GenericButtonClick}" cal:Click.CommandParameter="9">9</Button>
...
</Grid>
...
LoginViewModel.cs
public class LoginViewModel : ViewModelBase
{
public LoginViewModel()
{
GenericButtonClick = new DelegateCommand<string>(GenericButtonClickHandler);
}
private void GenericButtonClickHandler(string argument)
{
if (argument.Length < 2) {
CurrentUserKey += argument;
}
RaisePropertyChangedEvent("GenericButtonClick");
}
public string CurrentUserKey { get; set; }
private ICommand GenericButtonClick { get; set; }
}
ViewModelBase.cs
public class ViewModelBase:INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChangedEvent(string Property_name)
{
if (Property_name == null) return;
PropertyChangedEventArgs e = new PropertyChangedEventArgs(Property_name);
PropertyChanged(this, e);
}
}
【问题讨论】:
-
如果它没有绑定,您将在 Visual Studio 的“调试”窗口中获得一些与该效果相关的输出 - 您也可以将其粘贴到此处吗?
-
对我的n00bness 感到抱歉,在“调试”窗口或“输出”窗口中?如果在调试窗口中,你能指定我应该看哪个对象吗?谢谢
标签: wpf data-binding mvvm prism prism-2