Для чего используется opaqueRect во всплывающем шаблоне XAML - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь понять значение каждой части элементов управления во всплывающих шаблонах XAML. Вот оригинальный код:

    <Popup x:Name="PART_Popup"
        AllowsTransparency="true"
        Grid.ColumnSpan="2"
        IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
        PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}"
        Placement="Bottom">
    <Themes:SystemDropShadowChrome x:Name="shadow"
                                    Color="Transparent"
                                    MaxHeight="{TemplateBinding MaxDropDownHeight}"
                                    MinWidth="{Binding ActualWidth, ElementName=templateRoot}">
        <Border x:Name="dropDownBorder"
                BorderBrush="#FFEBEBEB"
                BorderThickness="1"
                CornerRadius="8"
                Background="White">
                <ScrollViewer x:Name="DropDownScrollViewer"
                                Template="{StaticResource UniversalScrollViewerTemplate}">
                    <Grid x:Name="grid"
                            RenderOptions.ClearTypeHint="Enabled">
                        <Grid.RowDefinitions>
                            <RowDefinition />
                            <RowDefinition />
                        </Grid.RowDefinitions>
                        <Canvas x:Name="canvas"
                                HorizontalAlignment="Left"
                                Height="0"
                                VerticalAlignment="Top"
                                Width="0">
                            <Rectangle x:Name="opaqueRect"
                                        Fill="{Binding Background, ElementName=dropDownBorder}"
                                        Height="{Binding ActualHeight, ElementName=dropDownBorder}"
                                        Width="{Binding ActualWidth, ElementName=dropDownBorder}" />
                        </Canvas>
                        <ItemsPresenter x:Name="ItemsPresenter"
                                        Grid.Row="1"
                                        KeyboardNavigation.DirectionalNavigation="Contained"
                                        SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                    </Grid>
                </ScrollViewer>
        </Border>
    </Themes:SystemDropShadowChrome>
</Popup>

Мне интересно, какова роль Canvas Control canvas в DropDownScrollViewer -> grid, поскольку его высота и ширина равны 0.

1 Ответ

0 голосов
/ 09 мая 2018

Поскольку Grid разрешает рендеринг текста ClearType. Текст ClearType должен отображаться на непрозрачном фоне.

Установите для свойства ClearTypeHint значение Enabled, чтобы указать, что поддерево безопасно для рендеринга текста ClearType. Делайте это только тогда, когда вы можете быть уверены, что текст отображается на полностью непрозрачном фоне .

https://msdn.microsoft.com/en-us/library/system.windows.media.renderoptions.cleartypehint(v=vs.110).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...