2

ExpressionDarkWPFアプリのテーマを使用していますが、のカスタムスタイルがありMenuItemsます。aMenuItemを無効にすると、これを反映するために灰色のスタイルを使用する必要があり、コントロールMenuItems内で機能します。Menu

作業メニューの状態

MenuItemsただし、ContextMenu(コピーが無効になっている)にある場合は機能しません

コピーは無効になっているように見えるはずです

問題をTextBlockスタイルまで追跡しました。このスタイルを削除すると、ContextMenuで機能しますが、他のスタイルは削除すると機能しなくなります。

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
</Style>

編集:私がaMenuItemまたは私のカスタムを使用するかGestureMenuItemどうかは関係ありませんが、重要なのは_charを使用するかどうかです(キーショートカットの場合)_を削除すると、スタイルはMainMenuどちらでも機能しません。

に関連するスタイルMenuItem

<Trigger Property="IsEnabled" Value="false">
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
</Trigger>

ここにあるソースコード。関連するContextMenuXAML:

<TextBox x:Name="Text"
    Height="Auto"
    TextWrapping="Wrap"
    VerticalScrollBarVisibility="Visible"
    AcceptsReturn="True"
    IsReadOnly="true">
    <TextBox.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Copy" Command="Copy">
                <MenuItem.Icon>
                    <Image Source="{StaticResource IconCopy}"/>
                </MenuItem.Icon>
            </MenuItem>
            <Separator></Separator>
            <MenuItem cal:Message.Attach="Clear()" Header="Clear All">
                <MenuItem.Icon>
                    <Image Source="{StaticResource IconDelete}"/>
                </MenuItem.Icon>
            </MenuItem>
        </ContextMenu>
    </TextBox.ContextMenu>
</TextBox>

MenuItemsメインメニューの作業中(同じスタイルGestureMenuItemを継承して使用):MenuItem

<Menu IsMainMenu="True">
    <Menu.Resources>
        <Image x:Key="ViewIcon" x:Shared="false"
            Source="{Binding Path=Icon}" />
    </Menu.Resources>
    <!-- Items here removed to shorten XAML -->
    <MenuItem Header="_Script">
        <common:GestureMenuItem x:Name="RunScript" Header="_Run script" Key="F5">
            <MenuItem.Icon>
                <Image Source="{StaticResource IconPlay}"/>
            </MenuItem.Icon>
        </common:GestureMenuItem>
      <common:GestureMenuItem x:Name="StopScript" Header="_Stop script" Key="F5" Modifiers="Shift">
            <MenuItem.Icon>
                <Image Source="{StaticResource IconStop}"/>
            </MenuItem.Icon>
        </common:GestureMenuItem>
    </MenuItem>
    <!-- Items here removed to shorten XAML -->
</Menu>

ジェスチャーアイテムのスタイル:

<Style TargetType="{x:Type Caliburn:GestureMenuItem}" BasedOn="{StaticResource {x:Type MenuItem}}">
</Style>

私は回避策を思いついた、それはまったく同じスタイルを与えることはないが、それはうまくいく、私はそれのために行くべきですか?

<Trigger Property="IsEnabled" Value="False">
    <Setter Property="Opacity" Value="0.5"/>
</Trigger>

このソリューションでは、ジェスチャーテキストとアイコンの両方が灰色であるため、フォアカラーを灰色に設定するよりも実際には優れたソリューションである可能性があります。

不透明度ソリューション

4

2 に答える 2

4

ForecolorプロパティセッターをOpacityプロパティセッターに置き換えることで解決しました。これは、デフォルトのスタイルの方法でもあるジェスチャテキストとアイコンにも影響します。

不透明度ソリューション

<Trigger Property="IsEnabled" Value="False">
    <Setter Property="Opacity" Value="0.3"/>
</Trigger>
于 2013-02-02T17:44:18.617 に答える
0

InputGestureTextとHeaderのContentPresentersを個別にターゲットにする方が効率的であることがわかりました。私の場合、MenuItem全体をターゲットにすると、シースルーのMenuItemが生成されました。私はあなたがそれを回避する方法を以下に示しました:

<Trigger Property="IsEnabled" Value="False">
    <Setter TargetName="HeaderHost" Property="Opacity" Value="0.3"/>
    <Setter TargetName="IGTHost" Property="Opacity" Value="0.3"/>
</Trigger>
于 2016-03-08T20:14:24.467 に答える