0

リスト ボックス項目のテンプレートがあります。画像ボタンが含まれています。ボタンをホバーすると画像が変わります。私が抱えている問題は、ホバーするとボタンに奇妙なアーティファクトが追加されることです。これは、ListBoxItem にある場合にのみ発生します。ボタンをメイン キャンバスに配置すると、正常に動作します。

通常の状態での画像は次のとおりです。

代替テキスト

ホバー状態の画像は次のとおりです。上端と右端にある 2 本の白い線に注目してください。

代替テキスト

さらに奇妙なのは、マウスを離して画像を元に戻すと、アーティファクトが残ることです。

代替テキスト

これが私のボタンのコードです。すべての背景ブラシ (ボタン、リストボックス項目など) で遊んでみました。

    <Style x:Key="RedXButton" TargetType="{x:Type Button}">
        <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
        <Setter Property="Background" Value="Black"/>
        <Setter Property="BorderBrush" Value="Transparent"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Foreground" Value="Transparent"/>
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Image Width="19" Height="18">
                            <Image.Style>
                                <Style TargetType="{x:Type Image}">
                                    <Setter Property="Source" Value="Views/Images/RedX.png"/>
                                        <Style.Triggers>
                                            <Trigger Property="IsMouseOver" Value="True">
                                                <Setter Property="Source" Value="Views/Images/RedXHover.png"/>
                                            </Trigger>
                                        </Style.Triggers>
                                </Style>
                            </Image.Style>
                        </Image>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsKeyboardFocused" Value="true"/>
                        <Trigger Property="ToggleButton.IsChecked" Value="true"/>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="Width" Value="19"/>
        <Setter Property="Height" Value="18"/>
        <Setter Property="OpacityMask" Value="{x:Null}"/>
    </Style>

私のリストボックス項目テンプレート:

<Canvas x:Name="LayoutRoot">
        <Image x:Name="image" Source="/Views/Images/FileGradient.png" Width="375" Height="43"/>
        <Button x:Name="RedX" Style="{DynamicResource RedXButton}" Command="{Binding RemoveCommand}" Canvas.Left="11" Canvas.Top="13" Width="19" Height="18" />
    </Canvas>
4

2 に答える 2

0

ちょっと考えてみてください -SnapsToDevicePixelsリストボックス項目テンプレートのプロパティを「true」に設定してみてください。ボタンスタイルに設定する価値があるかもしれません:

<Setter Property="SnapsToDevicePixels" Value="true"/>
于 2010-01-19T13:00:09.130 に答える
0

さまざまな要素が競合する複数のスタイルになってしまいました。実際の修正が何であったかはわかりません。すべてのスタイルを単純化し、いくつかのコントロールを作り直したところ、消えてしまいました。残念ながら、最終的に何が修正されたのかわからないため、それ以上追加することはできません。

于 2011-08-05T16:18:59.697 に答える