6

トリガーで TreeViewItem のカーソルを変更する必要があります。このコードは、他のすべてのプロパティに対して機能しますが、Cursor には機能しません:

<Style.Triggers>
  <MultiTrigger>
     <MultiTrigger.Conditions>
        <Condition Property="QuickPhrases:TreeViewChecker.IsMouseDirectlyOverItem"    
                   Value="True">
        </Condition>
        <Condition Property="CanSelect" Value="True"></Condition>
      </MultiTrigger.Conditions>
      <Setter Property="BorderThickness" Value="0,0,0,1" />
      <Setter Property="BorderBrush" Value="Blue" />
      <Setter Property="Cursor" Value="Hand"></Setter>
      <Setter Property="Foreground" Value="Blue"></Setter>
  </MultiTrigger>
</Style.Triggers>

また、どうすれば正しく行うことができますか?

4

1 に答える 1

4

あなたはそれを正しくやっています、それはうまくいくはずです。実際、次の手順では問題を再現できません。

  • VS 2008 C# WPF アプリケーション ウィザードを介して新しいプロジェクトを作成しました。
    • App.xaml と Window1.xaml になります。
  • ツールボックスから Window1 に標準の TreeView を追加しました。
  • 2 つの TreeViewItems '1' と '2' を追加しました。
  • でスタイルを追加しましたTargetType="TreeViewItem"
  • スニペットをそのまま貼り付けましたが、もちろん条件をローカルなものに変更しました。

つまり、TreeViewItem にカーソルを合わせると、'Hand' または 'Wait' など、トリガーで選択した値にカーソルがトリガーされます。

ただし、1 つの重要な詳細: カーソルは、行全体ではなく、ヘッダーに直接ホバリングしているときにのみ表示されます(ただし、これは WPF TreeViewItem 行の動作と一致しています。行の強調表示に関する関連例については、こちらを参照してください)。特に、TeeViewItem ヘッダーが空の場合、カーソルは表示されません。ヘッダーのデータをまだ提供していますか?

そうでなければ、プロジェクト/環境の舞台裏で奇妙なことが起こっているに違いありませんか? このような単純な再現ケースはもう試しましたか?

于 2009-07-15T21:57:31.607 に答える