0

データグリッドを右クリックすると、コンテキスト メニューが表示されます。それは私が望むものとまったく同じように機能しますが、問題は、このメニュー スタイルが既存のメニュー スタイルを上書きすることです。このメニューだけに ControlTemplate を適用したい。助けてください。

ここにXAMLがあります

<ContextMenu  x:Key="cellContextMenu">
    <MenuItem Header="Insert symbol" Margin="0,0,0,0" HorizontalContentAlignment="Right">
        <StackPanel Orientation="Horizontal" Margin="0,0,0,0">
            <wpfc:SymbolController x:Name="dgSymbolControl" Width="400" Height="400" value="{Binding Path=SelectedSymbolItem, Mode=TwoWay, diagnostics:PresentationTraceSources.TraceLevel=High}"></wpfc:SymbolController>
            <TextBlock FontFamily="DYMObvba" Text="{Binding ElementName=dgSymbolControl, Path=value}" />
        </StackPanel>
    </MenuItem>
</ContextMenu>
<ControlTemplate x:Key="{x:Static MenuItem.SubmenuItemTemplateKey}" TargetType="{x:Type MenuItem}">
    <Grid>
        <Border Name="Check" Visibility="Collapsed" Margin="0,0,0,0"></Border>
        <ContentPresenter Grid.Column="1" ContentSource="Header" RecognizesAccessKey="True"/>
    </Grid>
</ControlTemplate>

メニューを適用するコードは次のとおりです。

eCell.ContextMenu = (ContextMenu)FindResource("cellContextMenu");

ありがとうディー

4

1 に答える 1

1

ContextMenu 内で ControlTemplate を定義しようとします。

<ContextMenu  x:Key="cellContextMenu">
<ContextMenu.Resources>
...
<ControlTemplate x:Key="{x:Static MenuItem.SubmenuItemTemplateKey}" TargetType="{x:Type MenuItem}">
    <Grid>
        <Border Name="Check" Visibility="Collapsed" Margin="0,0,0,0"></Border>
        <ContentPresenter Grid.Column="1" ContentSource="Header" RecognizesAccessKey="True"/>
    </Grid>
</ControlTemplate>
</ContextMenu.Resources>
    <MenuItem Header="Insert symbol" Margin="0,0,0,0" HorizontalContentAlignment="Right">
        <StackPanel Orientation="Horizontal" Margin="0,0,0,0">
            <wpfc:SymbolController x:Name="dgSymbolControl" Width="400" Height="400" value="{Binding Path=SelectedSymbolItem, Mode=TwoWay, diagnostics:PresentationTraceSources.TraceLevel=High}"></wpfc:SymbolController>
            <TextBlock FontFamily="DYMObvba" Text="{Binding ElementName=dgSymbolControl, Path=value}" />
        </StackPanel>
    </MenuItem>
</ContextMenu>

...または XAML で MenuItem の Style を設定します。

<ContextMenu x:Key="cellContextMenu">
    <MenuItem Style="MyMenuStyle" Header="Insert symbol" Margin="0,0,0,0" HorizontalContentAlignment="Right">
        <StackPanel Orientation="Horizontal" Margin="0,0,0,0">
            <wpfc:SymbolController x:Name="dgSymbolControl" Width="400" Height="400" value="{Binding Path=SelectedSymbolItem, Mode=TwoWay, diagnostics:PresentationTraceSources.TraceLevel=High}"></wpfc:SymbolController>
            <TextBlock FontFamily="DYMObvba" Text="{Binding ElementName=dgSymbolControl, Path=value}" />
        </StackPanel>
    </MenuItem>
</ContextMenu>

<Style x:Key="MyMenuStyle" TargetType="{x:Type MenuItem}">
    <ControlTemplate x:Key="{x:Static MenuItem.SubmenuItemTemplateKey}" TargetType="{x:Type MenuItem}">
        <Grid>
            <Border Name="Check" Visibility="Collapsed" Margin="0,0,0,0"></Border>
            <ContentPresenter Grid.Column="1" ContentSource="Header" RecognizesAccessKey="True"/>
        </Grid>
    </ControlTemplate>
</Style>
于 2012-11-10T08:25:33.703 に答える