2015-01-09 2 views
2

Я хотел бы привязать цвет границы к значению переключателя на границе. Если кнопка истинна - выбрана - я хотел бы изменить цвет по умолчанию границы от синего до красного.Перемещение цвета фона в Silverlight

<Border x:Name="RibbonMenuRight" 
    Background="Blue" 
    Margin="5"> 

     <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> 

<RadioButton Margin="0,0,0,10" 
     VerticalAlignment="Center" 
     HorizontalAlignment="Center" 
     GroupName="directions" 
     DataContext="{Binding UserSiteSettings}" 
     IsChecked="{Binding ExpanderLocation, ConverterParameter=Right,Converter=StaticResource ExpanderValueToBoolConverter}, Mode=TwoWay}" /> 

<TextBlock Text="Right " HorizontalAlignment="Center"/> 

</StackPanel> 
</Border> 

Любая помощь будет оценена

приветы микрофону

ответ

1

Похоже, что вы можете использовать ElementName связывания с преобразователем:

<Border x:Name="RibbonMenuRight" 
     Background="{Binding ElementName=ColorRadioButton,Path=IsChecked,Converter={StaticResource BoolToColorConverter}}" ...> 
    <Border.Resources> 
     <ResourceDictionary> 
      <local:BoolToColorConverter x:Key="BoolToColorConverter" /> 
     </ResourceDictionary> 
    </Border.Resources> 
</Border> 

<RadioButton x:Name="ColorRadioButton" ... /> 

Преобразователь должен вернуть соответствующую кисть :

public class BoolToColorConverter : IValueConverter 
{ 
    private static Brush _trueBrush = new SolidColorBrush(Colors.Red), 
     _falseBrush = new SolidColorBrush(Colors.Blue); 

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     bool isChecked = (value as bool?) ?? false; 
     return (isChecked ? _trueBrush : _falseBrush); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
Смежные вопросы