WPF-数据绑定(命令未执行)

时间:2018-08-19 20:33:13

标签: wpf windows xaml data-binding

我正在编写一个WPF应用程序,希望在其中实现MVM模式。 我的代码当前是这样设置的:

这是我的视图模型类,在这里我希望将要作为属性执行的命令公开

```

    public HomeScreenViewModel(NavigationService mw)
    {
        this.mw = mw;
    }

    private RelayCommand _addStudent;
    public ICommand AddStudent
    {
        get
        {
            if (_addStudent == null)
            {
                _addStudent = new RelayCommand(param => this.OpenNewStudents(), param => true);
            }
            return _addStudent;
        }
    }

这是我的xaml,其中包含相应视图的布局

<Page x:Class="test.HomeScreen"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  xmlns:local="clr-namespace:test"
  mc:Ignorable="d" 
  d:DesignHeight="450" d:DesignWidth="1300"
  Title="HomeScreen">
<WrapPanel VerticalAlignment="Center" HorizontalAlignment="Center">
    <WrapPanel HorizontalAlignment="Center" Height="300" Margin="0,0,0,0" VerticalAlignment="Center" Width="1300">
    <Button Content="AddStudent" Command="{Binding AddCommand}"  Style="{StaticResource ButtonStyle}" />
    <Button Content="AddStudent" Style="{StaticResource ButtonStyle}" />
    <Button Content="AddStudent" Style="{StaticResource ButtonStyle}" />
    <Button Content="AddStudent" Style="{StaticResource ButtonStyle}" />
    <Button Content="AddStudent" Style="{StaticResource ButtonStyle}" />
    <Button Content="AddStudent" Style="{StaticResource ButtonStyle}" />
    <Button Content="AddStudent" Style="{StaticResource ButtonStyle}" />
    <Button Content="AddStudent" Style="{StaticResource ButtonStyle}" />
    <TextBox Text="{Binding Path=HI}" Width="200" Height="200"/>
    </WrapPanel>
<Canvas Margin="350, 100,0, 0" Height="300" Width="1350" VerticalAlignment="Center" HorizontalAlignment="Center">
        <Image Source="Logo.PNG"/>
    </Canvas>
</WrapPanel>

我已经使用WrapPanel中的绑定语法设置了顶部按钮的命令。

此HomeScreen页面是从导航窗口链接的,并且是导航窗口(xaml文件)的来源:

<NavigationWindow x:Class="test.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:test"
    mc:Ignorable="d"
    Title="School Management App" Height="350" Width="1250"
    Source="HomeScreen.xaml">
 </NavigationWindow>

我的HomeScreen视图构造函数设置如下:

public partial class HomeScreen : Page
{
    public HomeScreen()
    {
        InitializeComponent();
        this.DataContext = new HomeScreenViewModel(this.NavigationService);
    }
}

如上所述,我的基础设施已经建立,我的中继命令实现来自此站点https://msdn.microsoft.com/en-us/magazine/dd419663.aspx

当我运行我的应用程序并按下相应的按钮时,什么也没有发生。我想知道是否有人可以帮助我找出问题所在以及命令绑定为何不起作用。非常感谢,谢谢:)

作为旁注,有人可以给我一些提示,以了解什么是调试wpf应用程序的最佳方法,并弄清运行时存在哪些绑定。

谢谢:)

1 个答案:

答案 0 :(得分:4)

您的命令名称是AddStudent,但是您在xaml中使用AddCommand。只需更正名称即可: Command =“ {Binding AddStudent}”