2014-11-03 68 views
3

我有一個邊框,我想根據布爾變量改變它的顏色。我用link here來實現BooleanColor轉換器。根據布爾值更改邊框顏色

的代碼看起來是這樣的:

的XAML:

<Border Width="45" 
    Height="45" CornerRadius="5" 
    Background="{Binding Path=LivenessActive, Converter={StaticResource BrushColorConverter}}" /> 

在背景LivenessActive變量:

public bool LivenessActive 
{ 
    get { return _livenessActive; } 
    set 
    { 
     _livenessActive = value; 
     OnPropertyChanged("LivenessActive"); 
    } 
} 

凡類有一個繼承了INotifyPropertyChanged並已實施了ev ENT。

的BrushColorConverter.cs:

public class BrushColorConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if ((bool)value) 
     { 
      { 
       return new SolidColorBrush(Colors.GreenYellow); 
      } 
     } 
     return new SolidColorBrush(Colors.DarkGray); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 

} 

但我不能開除甚至BrushColorConverter。我做錯了什麼?

第二:如果我想從另一個窗口使用它呢?

<Border Width="45" Height="45" CornerRadius="5" 
    Background="{Binding Path=LivenessActive, Converter={StaticResource BrushColorConverter}, 
       RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type view:MyWindowName}}}" /> 

我使用相同的代碼,它不是找到它。

+0

我在這段代碼中看不出任何錯誤。 LivenessActive在哪裏定義? DataContext是否相應地設置? – dkozl 2014-11-03 11:47:56

+0

True ... DataContext !!我怎麼能把它忘了......請發表你的回答,這樣我就可以讓它升級... – Sonhja 2014-11-03 11:50:11

+0

如果我想從外部窗口使用它,那麼怎麼辦?看我的編輯。 – Sonhja 2014-11-03 11:54:32

回答

3

綜上所述意見,因爲似乎有什​​麼不對以上代碼會提示沒有與結合上下文

Background="{Binding Path=LivenessActive, Converter={StaticResource BrushColorConverter}}" 

您不能從另一個Window引用一個Window問題。如果您有兩個獨立的Window s,每個Border應觸發相同的屬性更改,那麼您將兩個窗口的DataContext設置爲同一個視圖模型實例。

+0

非常感謝!這正是我需要的! – Sonhja 2014-11-03 14:31:29