2013-08-11 12 views
8

は、私は2個のRunタグと1 Linebreakとテキストブロックを持っています。しかし、Visibleプロパティはありません...なぜそうですか? Runタグを1つだけ非表示にする最適な解決策は何ですか?隠すTextBlock内<Run />タグWPF

答えて

9

Visibilityは、すべてのUIコントロールから派生したUIElementクラスのプロパティですが、Runはそれから派生しません。

あなたができる最善の背後にあるコードでString.EmptyTextプロパティを設定することです:

bottomRun.Text = String.Empty; 
+0

これはあまりにも悪いですが、スタイルからはうまくいきません。 – tofutim

+0

@tofutimスタイルからは機能します。しかし、オブジェクトに直接設定されたスタイルのものは上書きできません。そのスタイルに値* only *を設定し、そのスタイル内のトリガーで上書きします。 – ANeves

+0

@ANeves - 本当ですか?前述のように 'Run'はそれに関連付けられた' Visibility'プロパティを持っていないので、Styleからどのように設定できるのでしょうか? –

1

時には、これが適切である - あなたが本当に「RUN」にテキストを必要とし、あなたが持っているしたい場合は理想的ではなく、インライン要素の自動改行。

<TextBlock> 
    <InlineUIElement><TextBlock Visibility="Collapsed" Text="TopText"/></InlineUIElement> 
    <LineBreak/> 
    <Run x:Name="bottomRun" Text="Bottom text"/> 
</TextBlock> 
+0

''は ''の子でなければなりません。 –

4

あなたが持っているTextBlockはかなり小さいです。同様の状況に直面したときに、私はそれを複製し、TextBlockにVisiblityプロパティをバインドしました。

<TextBlock Visibility="{Binding Path=LicenseValid, Converter={StaticResource BooleanToVisibilityConverter}, ConverterParameter=false }"> 
     <Run Text="TopText"/> 
     <LineBreak/> 
     <Run x:Name="bottomRun" Text="Bottom text"/> 
    </TextBlock> 

<TextBlock Visibility="{Binding Path=LicenseValid, Converter={StaticResource BooleanToVisibilityConverter}, ConverterParameter=false }"> 
     <Run Text="TopText"/> 
     <LineBreak/> 
     <Run x:Name="bottomRun" Text="Bottom text"/> 
    </TextBlock> 

コンバータは適切に宣言され、定義され、 'invert'パラメータをとります。

1

私はOPがこれで1つのTextBlockを使ってこれを解決したいと思っていましたが、TextBlocksの横向きのStackPanelで問題を解決しました。より多くのコントロールが関与しているので重いソリューションですが、機能します。

関連する問題