2009-04-17 3 views
1

プロパティ/値の大きなリストを表示する必要があります。私の問題は、これらすべてのプロパティの値がないため、その場合はこれらのプロパティを表示しないことです。WPFでは、子TextBlockの内容に応じてTextBlockを折りたたむ方法を教えてください。

いくつかのコードと私の問題を理解することが容易になります。

<StackPanel DataContext=...> 
<TextBlock>Info1:<TextBlock Text={Binding Path=Info1} /></TextBlock> 
<TextBlock>Info2:<TextBlock Text={Binding Path=Info2} /></TextBlock> 
<TextBlock>Info3:<TextBlock Text={Binding Path=Info3} /></TextBlock> 
</StackPanel> 

は基本的には、子供のTextBlockの内容に応じて、私は親のTextBlockを崩壊したいと思います。私の考えは、すべてのTextBlockに適用されるスタイルを使用してコンテンツをチェックすることでした。親が崩壊する場合は、残念ながら、DataTriggerから親にアクセスすることはできません。おそらくあなたはそれよりもきちんとした解決策を持っているでしょう:)

ありがとうございました!

答えて

2

あなたは、単純なコンバータ使用して、内側のTextBlockのテキストに外テキストブロックの可視性を結合することができる:

<TextBlock Name="outer1" 
      Visibility="{Binding ElementName=inner1, Path=Text, Converter={StaticResource MyConverter}}"> 
    Info1:<TextBlock Name="inner1" Text="{Binding Path=Info1}" /> 
</TextBlock> 

またはINFO1に直接外テキストブロックの可視性をバインド:

<TextBlock Visibility="{Binding Path=Info1, Converter={StaticResource MyConverter}}"> 
    Info1:<TextBlock Text="{Binding Path=Info1}" /> 
</TextBlock> 
1

テンプレートやスタイル内にいる場合は、トリガーを使用して外側のテキストブロックの表示を設定できます。 DataTemplateの場合、例えば

、:

<DataTemplate.Triggers> 
    <DataTrigger Binding="{Binding Path=Info1}" Value=""> 
     <Setter Property="Visibility" TargetName="pnlInfo1" Value="Hidden" /> 
    </DataTrigger> 
    <!-- and so on ... --> 
</DataTemplate.Triggers> 

は、ニーズに応じて、トリガを調整します。たとえば、nullのときは非表示にしたり、コンバーターをgcoresとして使用してより詳細なチェックを行うことができます。

関連する問題