1

请原谅我的无知,因为我是 C# 新手。

我目前正在开发一个 MVVM 项目,其中视图模型具有多个实例化的公共变量,这些变量与视图中的元素 (WPF) 进行数据绑定。当这些变量发生变化时,它们在我看来会自动更新。以我的视图模型中的以下代码段为例...

    private string _displaybind;

    public string DisplayBind
    {
        get { return _displaybind; }
        set
        {
            SetProperty(ref _displaybind, value);
            if (_displaybind.Length > 5000)
            {
                DisplayBind = _displaybind.Substring(_displaybind.IndexOf('\n') + 1);
            }
        }
    }

通过使用命令DisplayBind = "Hello"; 在我的视图模型中,我可以将文本推送到我位于 XAML 视图中的文本框。不幸的是,我已经到了不能简单地编辑 DisplayBind 的值的地步。

我需要在我的视图模型中启动一个状态机,它将访问不同 C# 文件中的多个状态(类)。但是,我不知道如何接收,更重要的是从这些单独的类中编辑我的视图模型中的值。

我使用这个在我的视图模型中启动我的状态机......

                    IPMProgram ipmprogram = new IPMProgram();
                ipmprogram.StartTheIPMProgram();

这是我的 IPMProgram 课程

    public class IPMProgram
{
    public IPMProgramState currentState = null;

    public IPMProgram()
    {
        currentState = new BootBannerState(this);
    }

    public void StartTheIPMProgram()
    {
        while (true)
        {
            currentState.GetNextState();
        }
    }
}

这是我的 IPMProgramState 类

    public abstract class IPMProgramState
{
    private IPMProgram ipmprogram;

    public IPMProgram Ipmprogram
    {
        get { return ipmprogram; }
        set { ipmprogram = value; }
    }

    public abstract void GetNextState();
}

这是我的 BootBannerState 类(我想从中编辑 DisplayBind 的状态)

    class BootBannerState : IPMProgramState
{
    public BootBannerState(IPMProgramState state)
        :this(state.Ipmprogram)
    {

    }

    public BootBannerState(IPMProgram ipmprograminstance)
    {
        this.Ipmprogram = ipmprograminstance;
    }

    public override void GetNextState()
    {
        //DisplayBind = "Hello"!
        return;
    }
}

有人建议我应该研究依赖注入,但我不太明白它对我的工作原理。我应该怎么办?

谢谢大家的帮助,

泰斯尼希

4

0 回答 0