更新模型后未设置属性

时间:2019-07-23 10:48:04

标签: c# wpf prism

我的应用程序正在使用MVVM,并通过使用视图模型上的getter属性来公开模型上的属性。我遇到的问题是,当我在模型上设置我的一个属性时,从模型中获取属性的视图模型上的属性没有被更新-设置模型上的属性后,永远不会调用get / set方法。如果我在视图模型的ColourR上设置了断点,则即使在模型上设置了SelectedColour,在设置ColourR之后也不会命中get或set。

当视图模型上的ColourR更新模型上的属性时,视图模型将设置模型上的SelectedColour属性。我的视图上的文本框绑定到视图模型上的ColourR属性,该属性应获取模型上该属性的值,但是只要此值更改,它就不会正确更新。

如果我使用{Binding LineAppearanceLayerDefinition.ColourR}将文本框直接绑定到模型,则它可以正常工作,但是我想了解为什么绑定不适合我在视图模型上的属性,因为我更喜欢这种方式。

型号:

public class AppearanceLayerDefinition : BindableBase
{
    private string _colourR;
    public string ColourR
    {
        get { return _colourR; }
        set
        {
            SetProperty(ref _colourR, value);
        }
    }

    private Color _selectedColour;
    public Color SelectedColour
    {
        get { return _selectedColour; }
        set
        {
            SetProperty(ref _selectedColour, value);
            ColourR = value.R.ToString();
        }
    }
}

查看模型:

public class AppearanceLayerDefinitionLineViewModel
{

    public AppearanceLayerDefinitionLineViewModel(ApperanceLayerDefinition appearanceLayerDefinition)
    {
        LineAppearanceLayerDefinition = appearanceLayerDefinition;
    }

    public LineAppearanceLayerDefinition { get; private set; }

    public Color SelectedColour
    {
        get { return LineAppearanceLayerDefinition.SelectedColour; }
        set
        {
            LineAppearanceLayerDefinition.SelectedColour = value;
        }
    }

    private string _colourR;
    public string ColourR
    {
        get { return LineAppearanceLayerDefinition.ColourR; }
        set
        {
            LineAppearanceLayerDefinition.ColourR = value;
            SetProperty(ref _colourR, value);
        }
    }
}

XAML:

<TextBox Grid.Column="2" Style="{StaticResource AppearanceLayersTextBoxGroupStyle}" Text="{Binding ColourR}" />

0 个答案:

没有答案