【问题标题】:Why does the command not work and no values are added to the TextBlock?为什么命令不起作用并且没有向 TextBlock 添加任何值?
【发布时间】: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

标签: c# wpf mvvm


【解决方案1】:

我认为这可能与此有关: How to capture a variable in C#

【讨论】:

    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 2013-03-16
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多