Отображение VisualBrush из скрытого элемента управления - PullRequest
1 голос
/ 02 апреля 2012

Я получил следующее 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 ]

2 голосов
/ 02 апреля 2012

Вы также можете поместить TextBlock в рамку и сделать это Hidden:

<Border Visibility="Hidden">
    <TextBlock ... />
</Border>
0 голосов
/ 02 апреля 2012

Нет. Если Visibility=Collapsed, то он не будет участвовать в проходе меры / аранжировки и не будет отображаться (Width и Height будут равны 0).

Какого эффекта вы пытаетесь достичь? Похоже, вы хотите панель предварительного просмотра? Ответьте в комментариях, и мы сможем найти лучший подход.

Редактировать: Существует способ вызвать меру / обновление для UIElement из кода, однако я думаю, что лучшим подходом для вас будет использование BoolToVisibilityConverter.

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...