Wpf 显示隐藏控件中的VisualBrush
我得到了以下xamlWpf 显示隐藏控件中的VisualBrush,wpf,xaml,Wpf,Xaml,我得到了以下xaml <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <TextBlock x:Name="_sampleText" Grid.Row="0" VerticalAlignment=
<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>
我希望我的视觉效果被渲染,即使他绑定的控件也不可见。有办法吗?没有。如果
可见性=塌陷
,则它将不参与测量/排列布局过程,并且不会被渲染(宽度
和高度
将为0)
你想达到什么效果?看起来你想要一个预览窗格?在评论中回复,我们可以找出最好的方法
编辑:有一种方法可以从代码隐藏调用ui元素的度量/更新,但是我认为最好的方法是使用booltVisibilityConverter
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<CheckBox x:Name="OptionCheckBox" Grid.Row="0" />
<Border Grid.Row="1" Visibility="{Binding Path=IsChecked, ElementName=OptionCheckBox", Converter={StaticResouce BoolToVisibilityConverter}}">
<TextBlock Width="200" Height="50" FontSize="36" Text="Hello world" TextAlignment="Center"/>
</Border>
</Grid>
您还可以将文本块放置在边框中,并将其隐藏起来:
<Border Visibility="Hidden">
<TextBlock ... />
</Border>
是否有一种方法可以在不渲染(屏幕上)控件的情况下调用测量/排列?是的,它有点像预览窗格。这是一个选项页面,用户可以在其中说:是的,我想显示该控件(或不显示),并尝试预览该控件的外观。如果控件已经可见,并且用户说我不想再看到它,这很容易,但反过来说,它不起作用…@melurus:更新了我的答案以回应您的评论。。。那应该是你想要的。如果您有许多不同类型的控件要预览,那么我会在预览窗格中放置一个ContentControl
,然后使用DataTemplate
作为一个不可见的容器,当然也可以使用任何其他面板。或
。这是你的选择,但视觉效果总是一样的。