我的应用程序正在使用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}" />