views:

371

answers:

0

I would like to dynamically create a set of context menu options based upon some properties.

Currently, I am creating a context menu as a DynamicResource with the visibility of the menu options bound to the properties, however, it seems that the DynamicResource is created only once, at runtime. Is this true? What I would like to do is have the menu generated each time, which will take into account the property changes on the data object.

Please see the following XAML snippet:

<Border DockPanel.Dock="Right"  Margin="4,4,4,4" BorderBrush="Gray" BorderThickness="1" CornerRadius="3" >
        <igDP:XamDataGrid Height="Auto" Width="Auto" Style="{DynamicResource DefaultInfragisticsGridStyle}" Name="axeDataGrid" ActiveRecord="{Binding Path=SelectedItem, Mode=TwoWay}"  DataSource="{Binding Path=Axes}" ContextMenuOpening="ContextMenuOpeningHandler">
            <igDP:XamDataGrid.Resources>
                <Style TargetType="{x:Type igDP:DataRecordPresenter}" BasedOn="{x:Static Themes:DataPresenterAero.DataRecordPresenter}"/>
                <ContextMenu x:Key="RecordContextMenu">
                    <ContextMenu.Resources>
                        <BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter"/>
                    </ContextMenu.Resources>
                    <MenuItem Header="Cancel Axe"

                              Command="{Binding RelativeSource={RelativeSource FindAncestor, 
                                                        AncestorType={x:Type igDP:XamDataGrid}}, 
                                                        Path=DataContext.CancelAxe}"
                              Visibility="{Binding RelativeSource={RelativeSource FindAncestor, 
                                                        AncestorType={x:Type igDP:XamDataGrid}}, 
                                                        Path=DataContext.IsCancelAxeAllowed, Converter={StaticResource booleanToVisibilityConverter}, Mode=OneWay}"/>
                    <MenuItem Header="Create RFQ"

                              Command="{Binding RelativeSource={RelativeSource FindAncestor, 
                                                        AncestorType={x:Type igDP:XamDataGrid}}, 
                                                        Path=DataContext.CreateRFQ}"
                              Visibility="{Binding RelativeSource={RelativeSource FindAncestor, 
                                                        AncestorType={x:Type igDP:XamDataGrid}}, 
                                                        Path=DataContext.IsCreateRfqAllowed, Converter={StaticResource booleanToVisibilityConverter}, Mode=OneWay}"/>

                </ContextMenu>
                <Style TargetType="{x:Type igDP:DataRecordCellArea}">
                    <Setter Property="ContextMenu" Value="{DynamicResource RecordContextMenu}" />

                </Style>