0

radtreeviewからハイライトの背景を取り除きたいです。これを行うためのスタイルを作成しましたが、「アイテムコレクションは空である必要があります」などのエラーや例外が発生し続けます。スタイルをコメントアウトすると、アプリケーションは正常に動作するので、それが問題の原因であることがわかります。私はWPFにかなり慣れていないので、スタイルの使用方法をまだ理解していないと確信しています。ご協力いただきありがとうございます。これがコードです。

<Grid x:Name="LayoutRoot" Background="Salmon">

        <telerik:RadTreeView x:Name="radTreeView" Margin="8" ItemsSource="{Binding Errors}" Background="Salmon" Style="{StaticResource treeStyle}">
             <Style TargetType="{x:Type telerik:RadTreeViewItem}" x:Name="treeStyle">
                <Setter Property="Focusable" Value="False"/>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Background" Value="{x:Null}"/>
                        <Setter Property="BorderBrush" Value="{x:Null}"/>
                    </Trigger>
                </Style.Triggers>
            </Style>


            <telerik:RadTreeView.ItemTemplate>
                 <HierarchicalDataTemplate ItemsSource="{Binding SubItems}" >
                    <Grid Background="Salmon">
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition/>

                        </Grid.RowDefinitions>
                        <TextBlock Text="{Binding Description}" IsHitTestVisible="False" />

                        <ListBox Grid.Row="1" ItemsSource="{Binding Messages}" Margin="20,0,0,0" BorderBrush="#00000000" BorderThickness="0" Background="Salmon" IsHitTestVisible="False" >
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Message}"/>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </Grid>

                </HierarchicalDataTemplate>


            </telerik:RadTreeView.ItemTemplate>


        </telerik:RadTreeView>

    </Grid>

</UserControl>

これが機能しないことがわかっている場合は、スタイルコードを使用してハイライトを削除しようとしていました。

<Style TargetType="TreeViewItem">
      <Style.Resources>
          <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#FFF"/>
          <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="#000"/>
     </Style.Resources>  
</Style>
4

1 に答える 1

2

スタイルタグは実際にはツリー内のアイテムであり、ItemsSource設定しているため、例外が発生します。

<telerik:RadTreeView.ItemContainerStyle>タグでスタイルを囲みます。

Backgroundこれで例外は解決されるはずですが、ツリー ビュー アイテムのコントロール テンプレートが実際にはプロパティの影響を受けない別の境界線を表示しているため、期待した結果が得られません。コントロール テンプレートを変更する必要があります。

Telerik はリリースごとにスタイルを変更するため、間違ったバージョンのテンプレートを提供してもおそらく役に立ちません。

ただし、Telerik のインストール フォルダーに移動して、"Themes" というフォルダーを探すことができます。そこでは、テレリックのすべてのテーマを備えたソリューションが見つかります。

  • 使用するものを選択してください。
  • ツリー ビューのリソース ディクショナリを見つけて、アイテムのスタイルとテンプレートをプロジェクトにコピーします。
  • xmlns 定義を変更し、スタイルが依存するすべてのブラシとリソースがあることを確認してください。
  • 実行して、スタイルに問題がないことを確認します。
  • テンプレートでVisualStatewithを見つけて、x:Name="MouseOver"その中のストーリーボードを削除します。
于 2012-05-30T16:47:52.247 に答える