从隐藏控件显示VisualBrush

时间:2012-04-02 19:35:14

标签: wpf xaml

我得到了以下xaml

<Grid>
<Grid.RowDefinitions>
  <RowDefinition Height="Auto" />
  <RowDefinition Height="Auto" />
</Grid.RowDefinitions>

<TextBlock x:Name="_sampleText"
           Grid.Row="0"
           VerticalAlignment="Stretch" 
           HorizontalAlignment="Stretch"
           Width="200" 
           Height="50"
           FontSize="36"
           Text="Hello world"
           TextAlignment="Center"
           Visibility="Collapsed" />

<Border Grid.Row="1" 
        Width="{Binding ActualWidth, ElementName=_sampleText}" 
        Height="{Binding ActualHeight, ElementName=_sampleText}">
  <Border.Background>
    <VisualBrush Stretch="None" 
                 Visual="{Binding ElementName=_sampleText}" />
  </Border.Background>
</Border>
</Grid>

即使他绑定的控件也不可见,我希望我的视觉效果呈现。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

您也可以将TextBlock放在边框中并制作Hidden

<Border Visibility="Hidden">
    <TextBlock ... />
</Border>

答案 1 :(得分:0)

没有。如果Visibility=Collapsed那么它将不会参与度量/排列布局并且不会被渲染(WidthHeight将为0)。

你想要达到什么效果?看起来你想要一个预览窗格?在评论中回复我们可以找出最佳方法。

修改:有一种方法可以从代码隐藏中调用UIElement上的度量/更新,但我认为最好的方法是使用{{1} }。

BoolToVisibilityConverter