Необходимо сделать контрол, чтобы получить подобный коллаут: http://keep4u.ru/full/be761395b1a57d9758cde5d594939194.html Проблема в том, что он может быть использован для отображения разного количества текста. Так что ширина у него должна быть фиксированная, а высота такая, чтобы поместился весь текст. Проблема в том, что лейбл неправильно возвращает свою высоту, в связи с чем не получается нормально нарисовать вокруг него прямоугольник. Пробовал заменить лейбл на textblock - та же история. Вот то, что я написал:
| Код | <Popup x:Class="Controls.Callout" x:ClassModifier="internal" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" > <Grid> <Image> <Image.Source> <DrawingImage> <DrawingImage.Drawing > <GeometryDrawing Brush="Orange" x:Name="geometryDrawing"> <GeometryDrawing.Pen> <Pen Brush="Black" Thickness="2"/> </GeometryDrawing.Pen> <GeometryDrawing.Geometry> <CombinedGeometry GeometryCombineMode="Union"> <CombinedGeometry.Geometry1> <RectangleGeometry x:Name="rectangel" RadiusX="15" RadiusY="15" Rect="0,30, 300,100" /> </CombinedGeometry.Geometry1> <CombinedGeometry.Geometry2> <PathGeometry> <PathFigure StartPoint="30,30" IsClosed="False"> <PolyLineSegment Points="15,0, 90,30"/> </PathFigure> </PathGeometry> </CombinedGeometry.Geometry2> </CombinedGeometry> </GeometryDrawing.Geometry> </GeometryDrawing> </DrawingImage.Drawing> </DrawingImage> </Image.Source> </Image> <Label Padding="5 20" MaxWidth="300" Name="myLabel" FontSize="16" > <!--Content="{Binding}">--> <!--MaxHeight="100" MaxWidth="300">--> <AccessText TextWrapping="Wrap" MaxHeight="50"/> </Label> </Grid> </Popup>
|
| Код | internal partial class Callout : Popup { public Callout() { InitializeComponent(); } protected override void OnOpened(System.EventArgs e) { rectangel = new RectangleGeometry(new Rect(0,30,300, myLabel.Height/2)); } }
|
|