我有一个带有背景的边框,该背景绑定到我的ViewModel中的color属性。但是初始化后背景只会改变一次颜色。与此同时,我有3个文本框绑定到同一属性(R,G和B),它们工作正常。
为什么文本框工作正常并且没有边框?这是边境代码:
<Border x:Name="bNewColor" BorderBrush="Black" >
<Border.Background>
<SolidColorBrush Color="{Binding NewColor}"/>
</Border.Background>
</Border>
文本框:
<Ellipse x:Name="eMarker" Margin="{Binding MarkerMargin, Mode=TwoWay}" Width="6" Height="6"/>
<TextBox x:Name="tbColorR" TextWrapping="Wrap" Text="{Binding NewColor.R}"/>
VM:
class ViewModel
{
Palette _palette
Thickness _markerMargin;
public Thickness MarkerMargin
{
get { return _markerMargin; }
set
{
_markerMargin = value;
_palette.DeterminateColorInPoint((int)_markerMargin.Left, (int)_markerMargin.Top);
OnPropertyChanged();
}
}
public ViewModel()
{
_palette = new Palette();
}
...
}
调色板类:
class Palette
{
Color[,] _paletteColors;
Color _newColor;
public Color NewColor
{
get { return _newColor; }
set
{
_newColor = value;
OnPropertyChanged();
}
}
public void DeterminateColorInPoint(int x, int y)
{
_newColor = _paletteColors[x, y];
}
...
}
答案 0 :(得分:1)
正如我所看到的,您的DeterminateColorInPoint(int x,int y)方法不会引发
NewColor属性的OnPropertyChanged(),因此XAML永远不会知道NewColor已被更改。您必须直接更改NewColor,而不是像cat /var/log/nginx/nginx.log
这样的支持字段。
让我知道我是否得到了帮助。 的问候,