2

これが機能しない理由は、トリガーが空の文字列またはnullをチェックしているためだと思いますが、実際にあるのは、空(またはnull)のTextプロパティを持つテキストブロックです。これを実現するためにトリガーを簡単に変更する方法を知っている人はいますか?運が悪かったのですが、バインド/トリガー/データトリガーのさまざまな方法を試して30分ほどいじりました。

<ListView.ItemContainerStyle>
   <Style TargetType="ListViewItem">

      <Setter Property="ToolTip">
         <Setter.Value>
            <!--Can't be directly in tool tip, cuz tool tip is object. StringFormat will only work with string-->
            <TextBlock>
               <TextBlock.Text>
                  <MultiBinding StringFormat="{}ID: {0}&#x0a;X: {1}&#x0a;Y: {2}">
                     <Binding Path="MyClass.Id"/>
                     <Binding Path="MyClass.x"/>
                     <Binding Path="MyClass.y"/>
                  </MultiBinding>
               </TextBlock.Text>
            </TextBlock>
         </Setter.Value>
      </Setter>

      <Style.Triggers>
         <Trigger Property="ToolTip.Content"  Value="{x:Static System:String.Empty}">
            <Setter Property="ToolTip.Visibility" Value="Collapsed" />
         </Trigger>
         <Trigger Property="ToolTip.Content" Value="{x:Null}">
            <Setter Property="ToolTip.Visibility" Value="Collapsed" />
         </Trigger>
     </Style.Triggers>

   </Style>
</ListView.ItemContainerStyle>
4

1 に答える 1

1

だから私は実際に上記のスタイルをまったく同じに保ちました。問題は、「MyClass」オブジェクトがnullの場合、空のツールチップが表示されることだったようです。

ただし、「MyClass」がnullの場合は、ツールチップの表示を停止する必要があります。

私は次のデータトリガーでこれを回避します:

  <DataTrigger Binding="{Binding Path=MyClass}" Value="{x:Null}">
     <Setter Property="ToolTip" Value="{x:Null}" />
  </DataTrigger>

元の投稿で持っていた他のトリガーはもう必要ありません。上記のスニペットでnullに設定ToolTipすると、ツールチップは自動的に表示されません。

于 2013-03-19T22:43:25.513 に答える