从运行任务中获取变量并显示在视图上

get Variable from running Task and display on View

提问人:Mat52 提问时间:2/14/2022 更新时间:2/14/2022 访问量:83

问:

当调用 MyActionFunc 时,下面的代码可以正常执行,但当函数位于另一个类中时则不能。MessageBox 显示正确的字符串,但未显示在视图中。我错过了什么?

class ViewModel : INotifyPropertyChanged
{
    public MyCommand ActionCommand
    {
        get;
        set;
    }

    public event PropertyChangedEventHandler PropertyChanged;
    
    protected void OnPropertyChanged([CallerMemberName] string propertyname = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyname));
    }

    public ViewModel()
    {
        ActionCommand = new MyCommand();
        ActionCommand.CanExecuteFunc = obj => true;
       // ActionCommand.ExecuteFunc = MyActionFunc;
        ActionCommand.ExecuteFunc = MyClass.MyActionFunc;
    }
   
    private string myname;
    public string myName
    {
        get => myname;
        set { myname = value;; OnPropertyChanged(); }
    }

    public void MyActionFunc(object parameter)
    {
        myName = "Fred";
    }
}
class MyClass
{
    public static void MyActionFunc(object parameter)
    {
        ViewModel name = new ViewModel();
        name.myName = "Fred";
        MessageBox.Show(name.myName);
    }
}

...以及与文本框的绑定

        <TextBox Name="textBox" Grid.Column="1"  Grid.Row="1" Text="{Binding Path=myName,  Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
C# 字符串 MVVM 文本框 视图模型

评论

0赞 Fildor 2/14/2022
您需要传递实际的 ViewModel 才能使其正常工作。否则,您将设置未绑定的新 viewModel 实例的属性。parametermyName
0赞 Mat52 2/15/2022
如何实现这一目标?我意识到,通过调用 new,将分配堆栈上的另一个存储单元。但是如何将原始实例的引用传递给其他方法呢?
0赞 Fildor 2/15/2022
在堆上,而不是堆叠上。关于如何通过它......呃,恐怕我的WPF技能太生疏了。我想应该有一种方法可以通过XAML将其绑定到参数...但实际上,我已经很久没有处理过这个问题了。

答: 暂无答案