PG日誌

各記事はブラウザの横幅を1410px以上にすると2カラムの見出しが表示されます。なるべく横に広げてみてください。

ListBoxの要素上にカーソルが乗ったときの強調表示を停止する

WFPでListBoxを使用している際時に、マウスカーソルが子要素の上にMouseOverしたときに要素を強調表示するために青い枠が以下のように表示されます。

f:id:Takachan:20171118012206p:plain

これを停止するためには以下のコードを記述します。デフォルトのスタイルを停止して自作の表示に切り替えます。

<ListBox ItemsSource="{Binding Items}">
    <ItemsControl.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="OverridesDefaultStyle" Value="True" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ContentControl}">
                        <ContentPresenter />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ItemsControl.ItemContainerStyle>
</ListBox>

ただ、これをしてしまうとデフォルトの表示が全部停止してしまうので、希望の動作を全部記述しなくて位はいけなくなります。

また、IsMouseOverしたときに、BackGroundを透過するアイデアは指定しても期待した効果は発生しませんので注意が必要です。

<Style.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
        <Setter Property="Background" Value="Transparent"/>
    </Trigger>
</Style.Triggers>