[C#] WPFのテーマを適用したらListBoxItemの行クリックが反応しない件

  • このエントリーをはてなブックマークに追加

Visual Studio Express 2012を最近導入したのをきっかけにC#の開発をWinFormsからWPFに乗り換えてみました。
そんで以下のサイトを参考にExpressionDarkのテーマを導入してみたんですが、なぜかListBoxItemsでラベルが載ってない部分をクリックしても反応しませんでした。

WPFテーマで外観・デザインを簡単に変更するには?(基本編) - @IT

ということで解決方法をサクッとメモ。

ExpressionDark.xamlを編集

てなわけで、テーマファイルを編集します。
ListBoxItemStyleが定義されているあたりに注目します。
するとそこにはContentPresenterを内包するGridがあります。

ExpressionDark.xaml

<Style d:IsControlPart="True" TargetType="{x:Type ListBoxItem}">
    ...
    <Grid SnapsToDevicePixels="true" Margin="1,1,1,1">  
        ...
        <ContentPresenter ... />
        ...
    </Grid>
    ...
</Style>

こいつをクリック出来ればいいのですが、このままだとダメなんだなこれが。
原因はBackgroundNullであること。てなわけでTransparentを設定してやります。

<Style d:IsControlPart="True" TargetType="{x:Type ListBoxItem}">
    ...
    <Grid SnapsToDevicePixels="true" Margin="1,1,1,1" Background="Transparent">
        ...
        <ContentPresenter ... />
        ...
    </Grid>
    ...
</Style>

はい、一丁上がり!
Trasparentに意味があったんですね…わからんわ!すごい悩んだわ!(#^ω^)

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。




コメントを残す