I have the following "Style" (defined as a Resource in xaml). This is basically a "DataGridColumnHeaderStyle" with a Menu that implements Row filtering. It is assigned to the DataGrid using: ColumnHeaderStyle="{StaticResource lclDataGridColumnHeaders}"
There are times in Code Behind I need to disable the (row filtering) Menu (menuColumnOptions), which is defined in this Style. Can anyone tell me how to access this element so I can change its Visibility via C#?
I tried: myDataGrid.Template.FindName("menuColumnOptions") but I received an error, something about it must be "applied"...
(I suppose the alternative solution is to create a duplicate "Style" WITHOUT this Menu and change all the Columns to use that style...)
<Style x:Key="lclDataGridColumnHeaders" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Foreground" Value="{StaticResource appTextColor}"/>
<Setter Property="FontWeight" Value="DemiBold"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border x:Name="BackgroundBorder"
BorderThickness="0,1,0,1"
Background="{StaticResource lclDataGridHeaderBackground}"
BorderBrush="Transparent"
Grid.ColumnSpan="2" />
<ContentPresenter Margin="6,3,6,3" VerticalAlignment="Center" />
<Path Grid.Column="1" x:Name="SortArrow" Visibility="Collapsed" Data="M0,0 L1,0 0.5,1 z"
Width="8" Height="6" Fill="Gray" Stretch="Fill" Margin="0,0,8,0"
VerticalAlignment="Center" RenderTransformOrigin="0.5,0.4" />
<Menu Grid.Column="3" x:Name="menuColumnOptions" VerticalAlignment="Center" Background="#FFF9F9F7" HorizontalAlignment="Right" >
<MenuItem Padding="0" SubmenuOpened="MenuItemColumnOptions_SubmenuOpened">
<MenuItem.Header>
<Border BorderBrush="{StaticResource appTextColor}" BorderThickness="1" CornerRadius="2" Height="20" Width="20" >
<Path Data="M0,0 L1,0 0.5,1 z" Stretch="Fill" Fill="{StaticResource appTextColor}"
Width="10" Height="8" VerticalAlignment="Center" RenderTransformOrigin="0.5,0.4" Margin="2,0"/>
</Border>
</MenuItem.Header>
<MenuItem x:Name="clearFilterMenuItem" Header="Clear Filter..." Click="ClearFilter_Click" IsEnabled="False">
<MenuItem.Icon>
<Image Source="/IngramBook.WpfTableEditor;component/Images/edit_undohs.png" Width="16" Height="16"/>
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Header="Equals..." Click="CustomAutoFilter_Click" />
<MenuItem Header="Does Not Equal..." Click="CustomAutoFilter_Click"/>
<Separator />
<MenuItem Header="Begins With..." Click="CustomAutoFilter_Click"/>
<MenuItem Header="Ends With..." Click="CustomAutoFilter_Click"/>
<Separator />
<MenuItem Header="Contains..." Click="CustomAutoFilter_Click" />
<MenuItem Header="Does Not Contain..." Click="CustomAutoFilter_Click"/>
<Separator />
<MenuItem Header="Custom Filter..." Click="CustomAutoFilter_Click">
<MenuItem.Icon>
<Image Source="/IngramBook.WpfTableEditor;component/Images/Filter2HS.png" Width="16" Height="16"/>
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Header="Select Individual Values..." Click="SelectIndividualItems_Click">
<MenuItem.Icon>
<Image Source="/IngramBook.WpfTableEditor;component/Images/checkboxhs.png" Width="16" Height="16"/>
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Header="Trim Trailing White Spaces..." Click="TrimTrailingWhiteSpaces_Click"/>
<MenuItem Header="Capitalization" >
<MenuItem.Icon>
<Image Source="/IngramBook.WpfTableEditor;component/Images/FontHS.png" Width="16" Height="16"/>
</MenuItem.Icon>
<MenuItem Header="Capitalize Each Word" Click="CapitalizeEachWord_Click"/>
<MenuItem Header="UPPERCASE" Click="Uppercase_Click"/>
<MenuItem Header="lowercase" Click="Lowercase_Click"/>
</MenuItem>
<Separator />
<MenuItem Header="Hide Column" Click="HideColumn_Click"/>
<Separator />
<MenuItem x:Name="deleteColumnMenuItem" Header="Delete Column" Click="dropColumnButton_Click">
<MenuItem.Icon>
<Image Source="/IngramBook.WpfTableEditor;component/Images/DeleteHS.png" Width="16" Height="16"/>
</MenuItem.Icon>
</MenuItem>
</MenuItem>
</Menu>
<Thumb x:Name="PART_LeftHeaderGripper" HorizontalAlignment="Left" Style="{StaticResource ColumnHeaderGripperStyle}"/>
<Thumb x:Name="PART_RightHeaderGripper" HorizontalAlignment="Right" Style="{StaticResource ColumnHeaderGripperStyle}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="SortDirection" Value="Ascending">
<Setter TargetName="SortArrow" Property="Visibility" Value="Visible" />
<Setter TargetName="SortArrow" Property="RenderTransform">
<Setter.Value>
<RotateTransform Angle="180" />
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="SortDirection" Value="Descending">
<Setter TargetName="SortArrow" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="SortDirection" Value="{x:Null}">
<Setter TargetName="SortArrow" Property="Visibility" Value="Collapsed" />
</Trigger>
<Trigger Property="DisplayIndex" Value="0">
<Setter Property="Visibility" Value="Collapsed" TargetName="PART_LeftHeaderGripper" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True" >
<Setter Property="Background" TargetName="BackgroundBorder" Value="{StaticResource appButtonBackgroundHighlight}" />
<Setter Property="BorderBrush" TargetName="BackgroundBorder" Value="Transparent" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>