0

データ階層を介して汎用派生ラッパー クラスにデータがバインドされている TreeView があります。バインドされたラッパー クラスには、「IsHilighted」や「IsExpanded」などのフィールドが追加されています。

バインドされたデータ プロパティ「IsHiglighted」に従って、TreeViewItem の背景を変更したいと思います。ハイライトされたアイテムの色を、デフォルトの選択されたアイテムの背景色と同じ (または明るい) 色に設定したいと思います。

理想的には、既存の XAML を変更したくありません...最終的にはコードを介して動作を追加できることを意味します。

アップデート

部分的な解決策を見つけました。以下に定義されているようにトリガーを追加する必要がありました。以下に含まれるコード。

        <Style TargetType="TreeViewItem">
            <Setter Property="IsExpanded" Value="{Binding Path=IsExpanded}"/>

            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=IsHilighted}" Value="true">
                    <Setter Property="Background" Value="SlateBlue"></Setter>
                    <Setter Property="Opacity" Value="160"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>

まだ解決されていません: Hilighted アイテムの色 (上記の部分的な解決策を参照) を「選択された」TreeViewItem の背景色にバインドするにはどうすればよいですか?

元の TreeView XAML コード:

<TreeView Name="TreeViewSelectScopeStudy" MinHeight="24" Margin="7" ItemsSource="{Binding Path=TvItemRootPssTreeViewRoot.ChildsView}" Height="Auto"
    VerticalAlignment="Stretch"
    VirtualizingStackPanel.IsVirtualizing="True"
    VirtualizingStackPanel.VirtualizationMode="Recycling">

    <TreeView.Resources>

        <Style TargetType="TreeViewItem">
            <Setter Property="IsExpanded" Value="{Binding Path=IsExpanded}"/>
        </Style>


        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red" />
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Green" />

        <HierarchicalDataTemplate DataType="{x:Type scopeSelection:WrapperSimulatedInfoStudy}" ItemsSource="{Binding Path=Childs}">
            <StackPanel Orientation="Horizontal">
                <CheckBox IsChecked="{Binding Path=IsSelected}"></CheckBox>
                <TextBlock Text="{Binding Path=TvItemName}" Margin="5,0,0,0"></TextBlock>
            </StackPanel>
        </HierarchicalDataTemplate>

        <HierarchicalDataTemplate DataType="{x:Type scopeSelection:WrapperSimulatedInfoSimulation}">
            <StackPanel Orientation="Horizontal" ToolTip="{Binding Path=Item.InvalidityReason}">
                <StackPanel.Style>
                    <Style TargetType="{x:Type StackPanel}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=Item.IsValid}" Value="false">
                                <Setter Property="Opacity" Value="160"></Setter>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </StackPanel.Style>
                <CheckBox IsChecked="{Binding Path=IsSelected}" IsEnabled="{Binding Path=Item.IsValid}" ToolTip="{Binding Path=Item.InvalidityReason}"></CheckBox>
                <CheckBox IsChecked="{Binding Path=IsHilighted}"></CheckBox>
                <TextBlock Text="{Binding Path=TvItemName}" Margin="5,0,0,0" ToolTip="{Binding Path=Item.InvalidityReason}">
                    <TextBlock.Style>
                        <Style TargetType="{x:Type TextBlock}">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Path=Item.IsValid}" Value="false">
                                    <Setter Property="Background" Value="LightPink"></Setter>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </TextBlock.Style>
                </TextBlock>
            </StackPanel>
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>
4

1 に答える 1

1

と呼ばれるもう 1 つのプロパティを定義し、それをsプロパティIsItemSelectedにバインドできます( で行った方法と同様です)。TreeViewItemIsSelectedIsExpanded

<Style TargetType="TreeViewItem">
    <Setter Property="IsExpanded" Value="{Binding Path=IsExpanded}"/>
    <Setter Property="IsSelected" Value="{Binding Path=IsItemSelected}"/>
</Style>

DataTrigger次に、IsItemSelectedプロパティの を定義し、背景色を設定できます。

<DataTrigger Binding="{Binding Path=IsItemSelected}" Value="true">
    <Setter Property="Background" Value="Blue"></Setter>
</DataTrigger>
于 2013-08-03T11:57:28.940 に答える