Hi,
I have expander control , on the header of expander i have defined context menu, which has several buttons , how can i acess these buttons from code behind.
I have tried following code in c#
_btnUp = (Button)(_Expander.Header as Control).ContextMenu.Template.FindName("btnUp", (_Expander.Header as Control).ContextMenu);
here is xaml of expander and Context menu
<ContextMenu x:Key="HeaderContextMenu" Height="100"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="20" /><ColumnDefinition Width="20" /><ColumnDefinition Width="20" /><ColumnDefinition Width="50" /></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="20"/></Grid.RowDefinitions><Button Grid.Column="0" x:Name="btnUp" Style="{StaticResource btnUp}"></Button><Button Grid.Column="1" x:Name="btnDown" Style="{StaticResource btnDown}"></Button><Button Grid.Column="2" x:Name="btnUnPin" Style="{StaticResource btnPin}"></Button><Button Content="Alle" Grid.Column="3" x:Name="btnAll" Style="{StaticResource btnAll}" ></Button></Grid></ContextMenu><Style TargetType="{x:Type Expander}" x:Key="Expanderstyle_New"><Setter Property="Foreground" Value="White"/><Setter Property="FlowDirection" Value="LeftToRight"></Setter><Setter Property="HorizontalContentAlignment" Value="Stretch"/><Setter Property="HorizontalAlignment" Value="Stretch"></Setter><Setter Property="VerticalContentAlignment" Value="Top"/><Setter Property="BorderBrush" Value="Transparent"/><Setter Property="BorderThickness" Value="0"/><Setter Property="Margin" Value="0,0,0,10"></Setter><Setter Property="FontWeight" Value="Bold"/><Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden"></Setter><Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden"></Setter><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Expander}"><ControlTemplate.Resources><Storyboard x:Key="Storyboard1"/></ControlTemplate.Resources><Grid Background="Transparent" ><Grid.RowDefinitions><RowDefinition Height="Auto" /><RowDefinition x:Name="ContentRow" Height="0" /></Grid.RowDefinitions><Border x:Name="Content" Grid.Row="1" BorderThickness="1,0,1,1"><ContentPresenter Margin="1" /></Border><Border x:Name="Border" Grid.Row="0" BorderThickness="1" CornerRadius="2,2,0,0" Background="{DynamicResource ExpanderHeaderBrush}"><Grid ><Grid.ColumnDefinitions><ColumnDefinition /><ColumnDefinition Width="30"/></Grid.ColumnDefinitions><ContentPresenter Grid.Column="0" Margin="4,8,4,4" ContentSource="Header" RecognizesAccessKey="True" x:Name="Header" ContextMenu="{StaticResource HeaderContextMenu}"></ContentPresenter><ToggleButton OverridesDefaultStyle="True" x:Name="tgb" Template="{StaticResource ExpanderToggleButton}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Grid.Column="1" Margin="4,0" ><!--<Style TargetType="ToggleButton"><Setter Property="Visibility" Value="Visible" /><Style.Triggers><DataTrigger Binding="{Binding Path=HasItems, RelativeSource={RelativeSource Mode=Self, AncestorType={x:Type ListBox}}}" Value="False"><Setter Property="Visibility" Value="Hidden" /></DataTrigger></Style.Triggers></Style>--></ToggleButton></Grid></Border></Grid><ControlTemplate.Triggers><Trigger Property="IsExpanded" Value="True"><Trigger.ExitActions><PauseStoryboard BeginStoryboardName="Storyboard1_BeginStoryboard"/></Trigger.ExitActions><Trigger.EnterActions><BeginStoryboard x:Name="Storyboard1_BeginStoryboard" Storyboard="{StaticResource Storyboard1}"/></Trigger.EnterActions><Setter TargetName="ContentRow" Property="Height" Value="{Binding DesiredHeight, ElementName=Content}"/></Trigger><Trigger SourceName="Header" Property="IsMouseOver" Value="True"><Setter TargetName="Header" Property="TextElement.Foreground" Value="{DynamicResource MouseOverBrush}"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style>
Sincerely, dhampall Please remember to mark the replies as answers if they help and unmark them if they provide no help.