如何在一个类中更改另一个类中的变量值?

时间:2017-03-29 17:42:43

标签: c# mvvm dependency-injection state-machine prism-6

请原谅我的无知,因为我是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);
            }
        }
    }

在我的viewmodel中使用命令 DisplayBind =" Hello&#34 ;; 我可以将文本推送到我在XAML视图中找到的文本框。不幸的是,我已经达到了一个不能简单地编辑DisplayBind值的地步。

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

我在我的viewmodel中启动了我的状态机...

                    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;
    }
}

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

感谢您的所有帮助,

Tesnich

0 个答案:

没有答案