2015-11-15 17 views
-1

我有一個綁定到我的ViewModel中的顏色屬性的背景邊框。但是初始化後,背景只會改變一次顏色。同時,我有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]; 
    } 

... 
} 
+1

不可能說沒有看到[良好,_minimal_,_complete_代碼示例](http://stackoverflow.com/help/mcve),可靠地再現問題,爲什麼你的代碼不工作。同時,查看調試輸出......綁定過程中的實際錯誤通常會導致綁定問題,這些問題將顯示在程序的調試輸出中。 –

+0

我看不出你如何改變'NewColor' –

+0

你很可能試圖從你的文本框中修改R,G,B組件,這不會像你綁定它們那樣工作。 –

回答

1

,我可以看到你的DeterminateColorInPoint(INT X, int y)方法不會引發 NewColor屬性的OnPropertyChanged(),因此XAML不會永遠不會知道NewColor已被更改。你必須直接改變NewColor而不是像這樣NewColor = _paletteColors[x, y];

讓我知道我是否得到了幫助。 問候,