围绕任意内容控件

时间:2012-06-21 20:25:50

标签: silverlight esri

我有一个Esri ArcGis地图控件,我想围绕边缘。我也在使用Prism4.0 / MEF和SL4。

我试图将它放在边框中,但这不起作用(Esri控件加载到MapRegion中,在另一个模块中):

<Border Grid.Row="2"
                Margin="2"
                CornerRadius="25">
            <ContentControl
                prism:RegionManager.RegionName="MapRegion"
                VerticalContentAlignment="Stretch"
                HorizontalContentAlignment="Stretch">
            </ContentControl>
        </Border>

1 个答案:

答案 0 :(得分:0)

更新:看起来这是不可能的。这不是Map本身的一个错误,但有点像。 Map使用Grid中的Canvas“RootElement”。此Canvas保存地图的图像。使用Canvas时,它不遵守它给出的界限。您可以使用以下XAML重现该错误

        <Border BorderBrush="Red" BorderThickness="2" CornerRadius="25">
            <Grid>
                <Grid>
                    <Canvas>
                        <Image Source="/Images/MyPicture.png"/>
                    </Canvas>
                </Grid>
            </Grid>
        </Border>

最好的方法是为地图设置显式样式。使用此样式,使用的任何地图都将具有圆角

<Style TargetType="esri:Map">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="esri:Map">
                <Border CornerRadius="25" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
                    <Grid>
                        <Grid x:Name="RootElement" Height="Auto" Width="Auto"/>
                        <Rectangle x:Name="ZoomBox" Fill="#55FFFFFF" Stroke="Red" StrokeThickness="2" Visibility="Collapsed"/>
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>