Sorot RibbonButton terakhir

Bagaimana cara menyorot tombol terakhir yang diklik sehingga pengguna memastikan konten yang benar ditampilkan? (Saya ingin 1 tombol disorot untuk konten tertentu hingga tombol lainnya diklik).

Saya menggunakan pita (System.Windows.Controls.Ribbon). Tombol yang harus disorot ditahan di dalam RibbonGroup dan digunakan untuk mengubah konten utama.

Tombol lain seharusnya berfungsi normal (Saya ingin membatasi jumlah tombol yang disorot setelah klik)

Saya menggunakan pola Model-View-ViewModel

    <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>

person corso    schedule 27.09.2016    source sumber


Jawaban (1)


Saya telah menyelesaikannya dengan mengikat properti HighLightSettingButton dan BorderBrush

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

dan implementasi Border Brush adalah

    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();
    }

 }
person corso    schedule 18.10.2016