我试图了解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>


我想知道画布控件canvasDropDownScrollViewer-> grid中的作用是什么,因为其高度和宽度均为0。

最佳答案

因为Grid允许ClearType文本呈现。 ClearType文本必须呈现为不透明背景。


  将ClearTypeHint属性设置为Enabled表示子树对于ClearType文本呈现是安全的。仅在可以确定文本将呈现到完全不透明的背景时,才执行此操作。


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

关于c# - XAML弹出模板中使用的opaqueRect是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50243676/

10-12 04:04