2010-07-31 63 views
2

我有以下代碼:工具提示能見度

<DataTemplate> 
    <!--<sdk:DataGridTextColumn Binding="{Binding Description}" Header="Description" Width="205" />--> 
    <TextBlock Text="{Binding Description}" Width="232"> 
     <ToolTipService.ToolTip > 
      <ToolTip Visibility="{Binding }"> 
       <sdk:DataGrid AutoGenerateColumns="False" GridLinesVisibility="None" HeadersVisibility="None" Height="Auto" ItemsSource="{Binding Contains}" > 
        <sdk:DataGrid.Columns> 
         <sdk:DataGridTextColumn Binding="{Binding Code}" Header="Code" CanUserSort="False" /> 
         <sdk:DataGridTextColumn Binding="{Binding Description}" Header="Description" CanUserSort="False"/> 
        </sdk:DataGrid.Columns> 
       </sdk:DataGrid>    
      </ToolTip> 
     </ToolTipService.ToolTip> 
    </TextBlock> 
</DataTemplate> 

我想我的提示顯示,只有在有在ItemsSource="{Binding Contains}"

我有什麼在Visibility寫至少一行屬性? 類似於

<ToolTip Visibility="{Binding Contains.Length > 0}"> 

但我找不出什麼語法應該是!有任何想法嗎?

回答

2

這對於IValueConverter的實施工作。在過去發佈過許多這樣的例子之後,我意識到大部分時間都可以使用更多的常規實現,所以我給他們寫了博客。

您需要的IValueConverter是我的StringToObjectConverter博客here。結合能見度時

<Grid x:Name="LayoutRoot"> 
    <Grid.Resources> 
     <local:StringToObjectConverter x:Key="CountToVisibility"> 
      <ResourceDictionary> 
       <Visibility x:Key="__Default__">Visible</Visibility> 
       <Visibility x:Key="0">Collapsed</Visibility> 
      </ResourceDictionary> 
     </local:StringToObjectConverter> 
    </Grid.Resources> 

,然後被使用在你的情況: - - :有了這個轉換器在你的項目中的代碼,你可以在這樣的資源創建它的一個實例

<ToolTip Visibility="{Binding Contains.Length, Converter={StaticResource CountToVisibility}}"> 

順便說一句,你確定要Length不是Count

+0

ReSharper的說,這些2行從不使用: <能見度X:鍵= 「__默認__」>可見 <能見度X:鍵= 「0」>摺疊 – bmanu 2010-08-01 20:08:26

+0

@bmanu:我聽到一些說Resharper是.NET開發人員的必備工具,有趣的是, – AnthonyWJones 2010-08-01 22:51:05

+0

,但它目前無法使用 - resharper評論是否有幫助? – bmanu 2010-08-02 16:09:17

3

您將不得不在該綁定上使用自定義轉換器。 Visibility屬性不是布爾值,它是一個枚舉。默認情況下,你的工具提示 設置能見度可見並添加此標記:

2

作爲一種替代方式,可以使用觸發器

<DataTemplate.Triggers> 
    <DataTrigger Binding="{Binding Contains.Length}" Value="0"> 
     <Setter TargetName="myTooltip" Property="Visibility" Value="Hidden" /> 
    </DataTrigger> 
</DataTemplate.Triggers> 
+0

我得到 'DataTemplate'類型中找不到附加屬性'觸發器' 缺少什麼? – bmanu 2010-08-01 06:37:18

+0

哦,對不起。 datatrigger爲WPF :( – Nagg 2010-08-01 09:49:50