2013-03-18 29 views
2

我假設這不起作用的原因是因爲我的觸發器正在檢查一個空字符串或空,但我真正擁有的是帶有文本的文本塊屬性爲空(或爲空)。有誰知道我可以如何輕鬆修改觸發器來實現這一點?我嘗試了不同的綁定/觸發器/數據觸發器的方式,並且沒有運氣,我花了半個小時左右。當空或空時不顯示多個綁定工具提示

<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> 
+0

供參考:http://stackoverflow.com/a/197130/620360。如果您的FormatString包含其他文本,則文本將永遠不會爲空或爲空。 – LPL 2013-03-19 00:15:21

+0

感謝您的鏈接,但我需要綁定到多個屬性。那麼奇怪的是,當我綁定到上面的屬性(id,x,y)爲null時,ToolTip顯示一個空格。我只希望ToolTip在工具提示包含文本時顯示。 – jsirr13 2013-03-19 19:55:58

+1

我已經在示例應用程序中試過了你的場景,如果綁定有問題,我只能得到一個空白的工具提示。如果一個或全部屬性爲空,則會丟失它們,但會顯示格式文本。這就是爲什麼我認爲你的方法不起作用。在我看來,最簡單的解決方案將是一個額外的字符串屬性ToolTip綁定返回非空,如果有什麼顯示。 – LPL 2013-03-19 21:13:46

回答

1

所以我實際上保持上面的樣式完全一樣。看起來問題是當我的「MyClass」對象爲空時,顯示一個空的工具提示。

但是當「MyClass」爲空時,我真的希望工具提示停止顯示。

我解決這個問題有以下datatrigger:

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

其他觸發我在我原來的職位都不再需要。通過在上面的代碼片段中將ToolTip設置爲null,工具提示將自動不顯示。

相關問題