2016-09-27 3 views
0

Wie kann ich die letzte Taste, die angeklickt wurde, hochglimmen, damit der Benutzer sicherstellt, dass der richtige Inhalt angezeigt wird? (Ich möchte 1 Schaltfläche für bestimmte Inhalte hervorgehoben haben, bis eine andere angeklickt wird).Highlight last RibbonButton

Ich verwende Band (System.Windows.Controls.Ribbon). Die Schaltflächen, die hervorgehoben werden sollen, befinden sich innerhalb der RibbonGroup und dienen zum Ändern des Hauptinhalts.

Andere Tasten sollen in der Regel verhalten (ich mag Anzahl der Tasten begrenzen, die nach dem Klick markiert)

Ich verwende Model-View-Viewmodel Muster

<Ribbon DockPanel.Dock="top"> 
      <RibbonTab Header="Home"> 
       <RibbonGroup Header="Process Flow"> 
        <StackPanel Orientation="Horizontal"> 
         <RibbonButton Label="Style change" LargeImageSource="pack://application:,,,/Resources/StyleChange.png"></RibbonButton> 
         <RibbonButton Label="Settings" Command="{Binding ChangeToSettingContentCommand}" LargeImageSource="pack://application:,,,/Resources/Settings.png"></RibbonButton> 
         <RibbonButton Label="Firmware changes" LargeImageSource="pack://application:,,,/Resources/Code.png"></RibbonButton> 
         <RibbonButton x:Name="testsButton" Label="Tests" Command="{Binding ChangeToTestContentCommand}" LargeImageSource="pack://application:,,,/Resources/test.png"></RibbonButton> 
        </StackPanel> 
       </RibbonGroup> 

Antwort

0

ich gelöst habe es durch die Bindung HighLightSettingButton Eigenschaft und BorderBrush

<RibbonButton Label="Settings" BorderBrush="{Binding HighLightSettingButton, Converter={StaticResource brs}}" Command="{Binding ChangeToSettingContentCommand}" LargeImageSource="pack://application:,,,/Resources/Settings.png"></RibbonButton 

und die Umsetzung von Border Brush ist

public class BrushColorConverter : IValueConverter 
    { 

     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { 
     if ((bool)value == true) { 
      return new SolidColorBrush(Colors.Orange);     
      //return (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFFEBAA")); 
     } else 
     return null; 
    } 

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

}