1

から選択するときに行を強調表示したいのですが、機能さListViewせることができません。誰かが私が持っているものを見て、私が間違っていることを教えてもらえますか?もう1つの質問は、ViewModelにプロパティを設定Backgroundし、ブール値に基づいて色を設定することについてはどうでしょうか。それをどのように実現できますか?

<ListView.ItemContainerStyle>
    <Style TargetType="{x:Type ListViewItem}">
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="Green" />
            </Trigger>

            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Yellow" />
            </Trigger>
        </Style.Triggers>
    </Style>
</ListView.ItemContainerStyle>
4

3 に答える 3

3

ここでの問題は、ListViewブラシタイプの「選択されたハイライト」を自動的に追加するためのアイテムテンプレートですSystemColors.HighlightBrushKey。「真の解決策」はアイテムテンプレートの定義を上書きすることですが、ここで必要なものを取得する1つの方法は次のようなものです。 :

<ListView.ItemContainerStyle>
    <Style TargetType="{x:Type ListViewItem}">
        <Style.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Green"/>
        </Style.Resources>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Yellow" />
            </Trigger>
        </Style.Triggers>
    </Style>
</ListView.ItemContainerStyle>
于 2012-12-31T19:09:39.890 に答える
0

と呼ばれるインターフェイスを使用して、Bool値をカラーブラシにバインドできますIValueConverter

関連する投稿は次のとおりです。IValueConverterのベストプラクティスは何ですか?

于 2012-12-31T18:53:17.873 に答える
0
            <ListView  Name="listBox1" ItemsSource="{Binding Path=SimpleList}"
                      HorizontalAlignment="Left" VerticalAlignment="Top" Background="Olive">
                <ListView.ItemContainerStyle>
                    <Style TargetType="ListViewItem">
                        <EventSetter Event="MouseEnter" Handler="listBox1_ListBoxItem_MouseEnter"/>
                        <EventSetter Event="MouseLeave" Handler="listBox1_ListBoxItem_MouseLeave"/>
                        <Style.Resources>
                            <!-- Background of selected item when focussed -->
                            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                                Color="Green"/>
                            <!-- Background of selected item when not focussed -->
                            <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
                                Color="Yellow" />
                        </Style.Resources>
                        <Style.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <!--<Setter Property="FontWeight" Value="Bold" />-->
                                <Setter Property="Background" Value="Orange" />
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </ListView.ItemContainerStyle>
            </ListView>
于 2012-12-31T21:14:18.077 に答える