【发布时间】:2022-01-01 10:47:46
【问题描述】:
我目前正在尝试找出 wpf 中的 MVVM 模式,并且我正在编写一个测试应用程序,但我遇到了一个问题。 CountCommand 不起作用。最初,该命令是同步的,也不起作用。如果您输入“Application.Current.Shutdown();”然后它将通过单击 TextBlock 关闭应用程序。这意味着团队本身正在工作,但它的身体出现了问题。
internal class MainWindowViewModel
{
public int i { get; set; }
public ICommand CountCommand{ get; set; }
private async void Execute(object p) => await Task.Run(() => i++);
private bool CanExecute(object p) => true;
public MainWindowViewModel()
{
CountCommand = new CommendBase(Execute, CanExecute);
}
}
当我点击文本块时,该命令应该添加1
这里是 ViewModel 部分
<Window x:Class="MVVM_Lesson_1.MainWindow" mc:Ignorable="d"
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:MVVM_Lesson_1"
xmlns:vm ="clr-namespace:MVVM_Lesson_1.ViewModle"
Title="MainWindow" Height="450" Width="800" Background="AliceBlue">
<Window.DataContext>
<vm:MainWindowViewModel></vm:MainWindowViewModel>
</Window.DataContext>
<Grid>
<TextBlock
Margin="20"
TextWrapping="Wrap"
Text="{Binding Path= i}"
VerticalAlignment="Top"
Height="50"
Width="150">
<TextBlock.InputBindings>
<MouseBinding
Gesture="LeftClick"
Command="{Binding Path=CountCommand}"/>
</TextBlock.InputBindings>
</TextBlock>
</Grid>
</Window>
【问题讨论】:
-
什么加1?视图中的某些内容或只是
i? -
您是如何将您的 xaml 文件绑定到视图模型的?发布您已声明绑定到视图模型的 xaml 部分。根据问题本身,如果您发布整个 xaml 文件会很好。可能您对命令和计数器有绑定问题。
-
不,绑定一切正常。因为显示了我从代码中设置的值,但是按下时它不会增加。
-
你的视图模型应该实现 INotifyPropertyChanged