Как создать растягивающий прямоугольник отсечения в Silverlight - PullRequest
3 голосов
/ 15 апреля 2011

Поскольку Silverlight не имеет удобной функции свойств 'ClipToBounds' в элементах управления, мне приходится самостоятельно определять формы отсечения.Мне было интересно, смогу ли я создать прямоугольник отсечения, который соответствует размеру моего элемента управления.Есть предложения?

Ответы [ 2 ]

3 голосов
/ 16 апреля 2011

Если в макете есть существующий элемент управления, который вы хотите динамически обрезать, используйте событие SizeChanged.Например, допустим, вы хотите обрезать эту сетку: -

    <Grid SizeChanged="Grid_SizeChanged" Width="50" Height="20">
        <Grid.Clip>
            <RectangleGeometry />
        </Grid.Clip>
        <TextBlock Margin="0 -9 0 0" Text="This text should not be legible" />
    </Grid>

С выделенным кодом: -

   private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        ((RectangleGeometry)((Grid)sender).Clip).Rect = new Rect(0.0, 0.0, e.NewSize.Width, e.NewSize.Height);
    }  

Для вашего собственного пользовательского элемента управления вы можете рассмотреть обработку прямоугольника обрезкив ArrangeOverride вместо того, чтобы полагаться на событие SizeChanged.В этом случае вы, вероятно, захотите присвоить RectangleGeometry свойству Clip в коде, а не полагаться на его назначение в Xaml шаблона по умолчанию.

0 голосов
/ 15 апреля 2011

Silverlight поддерживает это: попробуйте использовать HorisontalAlignment и свойства вертикального выравнивания.Установите их, чтобы растянуть.Если это не сработает, вам нужно будет опубликовать пример xaml.

...