We have an application that performs rather slow under citrix. They asked me to reduce as much MouseOver visuals possible, cause they think that everytime controls change citrix updates the screen. With the XamDataGrid I found that I can use the HoverlessStyles but I cant find how to do this for the XamRibbon. Is there a way to do this for the ribbon?
While I am at it. Is there some global way to do this for all types of controls? (buttons, checkboxes, ...)
Hello Mark,
Thank you for your post. I have been looking into it and I can say that there isn’t any global way of removing the hover animations and colors of our controls, so the thing you can do is copy the default Styles for the elements of the XamRibbon you don’t want to have hover animations and remove them. You can find the default Styles by default here: C:\Program Files (x86)\Infragistics\NetAdvantage 2012.1\WPF\DefaultStyles\Ribbon\RibbonGeneric.xaml file.
Hope this helps you.
Thanks for your help so far!
Only got 1 more question. Almost all I was able to do except for the mouse over on the toolbutton in the ribbon. It seems that the mouseover effect for the background gets overwritten somewhere. In the code below i am able to set the foreground to red. But the button still lights up in a yellow/orange glow and not the green I would expect. I want it to not light up at all but this is all test, for that I also killed all other triggers.
How or where do I kill the background mouseover effect?
Thanks in advanced.
<!-- =================================================================== --> <!-- ButtonTool Style --> <!-- =================================================================== --> <ControlTemplate TargetType="{x:Type ButtonBase}" x:Key="RibbonButtonToolTemplate">
<igRibbon:RibbonButtonChrome x:Name="chrome" IsPressed="{TemplateBinding IsPressed}" IsChecked="{TemplateBinding ToggleButton.IsChecked}" SnapsToDevicePixels="True"> <!-- JM BR27007 10-3-07 --> <!--<Grid Margin="1" x:Name="chromeContentPanel" >--> <Grid Margin="1" x:Name="chromeContentPanel" HorizontalAlignment="{Binding Path=HorizontalContentAlignment, RelativeSource={x:Static RelativeSource.TemplatedParent}}"> <Grid.RowDefinitions> <RowDefinition Height="*" x:Name="row0"/> <RowDefinition Height="Auto" x:Name="row1" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions>
<igWindows:AutoDisabledImage Width="16" Height="16" x:Name="image" igRibbon:XamRibbon.KeyTipPlacementType="SmallImage" igWindows:Utilities.SnapElementToDevicePixels="True" Visibility="{Binding Path=(igRibbon:ButtonTool.HasImage), RelativeSource={x:Static RelativeSource.TemplatedParent}, Converter={StaticResource BoolToVisConverter}}" Source="{TemplateBinding igRibbon:ButtonTool.ImageResolved}" /> <ContentPresenter x:Name="textSmall" Grid.Column="1" Content="{TemplateBinding igRibbon:ButtonTool.Caption, Converter={StaticResource stringWithoutMnemonicsConverter}}" SnapsToDevicePixels="True" VerticalAlignment="Center" TextBlock.TextAlignment="Left" igRibbon:RibbonGroupPanel.SizingModeVersion="{TemplateBinding igRibbon:RibbonGroupPanel.SizingModeVersion}" Margin="3,0,2,1"/> <igRibbon:LargeToolCaptionPresenter x:Name="textLarge" Grid.Row="2" Text="{TemplateBinding igRibbon:ButtonTool.Caption, Converter={StaticResource stringWithoutMnemonicsConverter}}" Visibility="Collapsed" /> </Grid>
</igRibbon:RibbonButtonChrome>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True"> <Setter Property="Foreground" Value="Red"/> <Setter Property="Background" Value="Green"/> </Trigger>
<!--<MultiTrigger> <MultiTrigger.Conditions> <Condition Property="igRibbon:ButtonTool.SizingMode" Value="ImageOnly" /> <Condition Property="igRibbon:ButtonTool.HasImage" Value="True" /> </MultiTrigger.Conditions> <Setter TargetName="textSmall" Property="Visibility" Value="Collapsed"/> </MultiTrigger>
<MultiTrigger> <MultiTrigger.Conditions> <Condition Property="igRibbon:ButtonTool.SizingMode" Value="ImageAndTextLarge" /> <Condition Property="igRibbon:XamRibbon.Location" Value="Ribbon" /> </MultiTrigger.Conditions> <Setter TargetName="textSmall" Property="Visibility" Value="Collapsed"/> <Setter TargetName="textLarge" Property="Visibility" Value="Visible"/> <Setter TargetName="image" Property="Width" Value="32"/> <Setter TargetName="image" Property="Height" Value="32"/> <Setter TargetName="image" Property="Margin" Value="0,0,0,2"/> <Setter TargetName="row0" Property="Height" Value="Auto"/> <Setter TargetName="row1" Property="Height" Value="*"/> <Setter TargetName="chromeContentPanel" Property="Margin" Value="1,1,1,0"/> </MultiTrigger>
<Trigger Property="igRibbon:XamRibbon.Location" Value="Ribbon"> <Setter Property="HorizontalAlignment" Value="Left"/> </Trigger>
<Trigger Property="igRibbon:XamRibbon.Location" Value="QuickAccessToolbar"> <Setter Property="Margin" Value="0,-2,0,0"/> <Setter TargetName="chrome" Property="Padding" Value="0,2,0,0"/> </Trigger>
<Trigger Property="igRibbon:XamRibbon.Location" Value="ApplicationMenuFooterToolbar"> <Setter Property="Foreground" Value="{DynamicResource {x:Static igRibbon:RibbonBrushKeys.ToolEnabledForegroundTextFillKey}}" /> <Setter Property="Margin" Value="6,0,0,0"/> </Trigger>
<MultiDataTrigger> <MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=(igRibbon:XamRibbon.Location), RelativeSource={x:Static RelativeSource.Self}}" Value="QuickAccessToolbar" /> <Condition Binding="{Binding Path=(igRibbon:XamRibbon.IsGlassActive), RelativeSource={x:Static RelativeSource.Self}}" Value="False" /> </MultiDataTrigger.Conditions> <Setter Property="Foreground" Value="{DynamicResource {x:Static igRibbon:RibbonBrushKeys.ToolInQATForegroundTextFillKey}}"/> </MultiDataTrigger>
<MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding Path=Location, RelativeSource={x:Static RelativeSource.Self}}" Value="QuickAccessToolbar" /> <Condition Binding="{Binding Path=IsBelowRibbon, RelativeSource={RelativeSource FindAncestor, {x:Type igRibbon:QuickAccessToolbar}, 1}}" Value="False" /> <Condition Binding="{Binding Path=(igRibbon:XamRibbon.IsGlassActive), RelativeSource={x:Static RelativeSource.Self}}" Value="True" /> <Condition Binding="{Binding Path=WindowState, RelativeSource={RelativeSource FindAncestor, {x:Type Window}, 1}}" Value="Normal" /> </MultiDataTrigger.Conditions> <Setter TargetName="textSmall" Property="BitmapEffect" Value="{igWindows:SafeOuterGlow GlowColor=White, GlowSize=10, Opacity=0.6}" /> <Setter TargetName="textLarge" Property="BitmapEffect" Value="{igWindows:SafeOuterGlow GlowColor=White, GlowSize=10, Opacity=0.6}" /> </MultiDataTrigger>
<Trigger Property="igRibbon:XamRibbon.HideAccessKey" Value="False"> <Setter TargetName="textSmall" Property="RecognizesAccessKey" Value="True"/> <Setter TargetName="textSmall" Property="Content" Value="{Binding Path=(igRibbon:ButtonTool.Caption), RelativeSource={x:Static RelativeSource.TemplatedParent}}"/> </Trigger>
<Trigger Property="IsEnabled" Value="False"> <Setter Property="Foreground" Value="{DynamicResource {x:Static igRibbon:RibbonBrushKeys.ToolDisabledForegroundTextFillKey}}"/> </Trigger>--> </ControlTemplate.Triggers> </ControlTemplate>
<Style TargetType="{x:Type igRibbon:ButtonTool}"> <Setter Property="ToolTipService.ShowDuration" Value="20000" /> <Setter Property="Foreground" Value="{DynamicResource {x:Static igRibbon:RibbonBrushKeys.ToolEnabledForegroundTextFillKey}}"/> <Setter Property="Template" Value="{StaticResource RibbonButtonToolTemplate}"/> <Style.Triggers>
<Trigger Property="IsMouseOver" Value="True"> <!--<Setter Property="Foreground" Value="#ffffffff"/> <Setter Property="Background" Value="#ffffffff"/>--> </Trigger>
<!--<MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding Path=Location, RelativeSource={x:Static RelativeSource.Self}}" Value="QuickAccessToolbar" /> <Condition Binding="{Binding Path=IsBelowRibbon, RelativeSource={RelativeSource FindAncestor, {x:Type igRibbon:QuickAccessToolbar}, 1}}" Value="False" /> <Condition Binding="{Binding Path=(igRibbon:XamRibbon.IsGlassActive), RelativeSource={x:Static RelativeSource.Self}}" Value="True" /> <Condition Binding="{Binding Path=WindowState, RelativeSource={RelativeSource FindAncestor, {x:Type Window}, 1}}" Value="Normal" /> </MultiDataTrigger.Conditions> <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ActiveCaptionTextBrushKey}}"/> </MultiDataTrigger>
<MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding Path=Location, RelativeSource={x:Static RelativeSource.Self}}" Value="QuickAccessToolbar" /> <Condition Binding="{Binding Path=IsBelowRibbon, RelativeSource={RelativeSource FindAncestor, {x:Type igRibbon:QuickAccessToolbar}, 1}}" Value="False" /> <Condition Binding="{Binding Path=(igRibbon:XamRibbon.IsGlassActive), RelativeSource={x:Static RelativeSource.Self}}" Value="True" /> <Condition Binding="{Binding Path=WindowState, RelativeSource={RelativeSource FindAncestor, {x:Type Window}, 1}}" Value="Maximized" /> </MultiDataTrigger.Conditions> <Setter Property="Foreground" Value="{DynamicResource {x:Static igRibbon:RibbonBrushKeys.VistaWindowMaximizedTextFillKey}}"/> </MultiDataTrigger>
<MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding Path=Location, RelativeSource={x:Static RelativeSource.Self}}" Value="QuickAccessToolbar" /> <Condition Binding="{Binding Path=(igRibbon:XamRibbon.IsGlassActive), RelativeSource={x:Static RelativeSource.Self}}" Value="False" /> </MultiDataTrigger.Conditions> <Setter Property="Foreground" Value="{DynamicResource {x:Static igRibbon:RibbonBrushKeys.ToolInQATForegroundTextFillKey}}"/> </MultiDataTrigger>
<Trigger Property="IsEnabled" Value="False"> <Setter Property="Foreground" Value="{DynamicResource {x:Static igRibbon:RibbonBrushKeys.ToolDisabledForegroundTextFillKey}}"/> </Trigger>-->
</Style.Triggers> </Style>
Here you can read more about theming XamRibbon:
http://www.infragistics.com/community/blogs/kiril_matev/archive/2010/08/30/theming-your-infragistics-wpf-line-of-business-applications-made-quick-and-easy.aspx
and
http://help.infragistics.com/Help/NetAdvantage/WPF/2012.1/CLR4.0/html/Creating_And_Applying_Color_Tuning_Configurations.html