Растянуть сетку из кода с заданными шириной и высотой - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть сетка, которая определена в какой-то момент в моей ViewModel.

Я хочу вырезать некоторые области этой сетки, затем растянуть ее до части экрана и отобразить ее как «оверлей»в пользовательском интерфейсе.Чтобы сделать отсечение, мне нужны какие-то координаты на сетке, но если я установлю ее размер, она отказывается растягиваться.

ViewModel:

Grid newGridMask = new Grid
{
    Width = 100.0,
    Height = 100.0,
    Background = Brushes.Black,
    Opacity = 0.5
};

//Clipping

GridMask = newGridMask;

//Does nothing:
//GridMask.HorizontalAlignment = HorizontalAlignment.Stretch;
//GridMask.VerticalAlignment = VerticalAlignment.Stretch;

Вид:

<Grid>
    <Canvas Name="MouseSpace" Background="Blue"/>
    <ContentControl Content="{Binding GridMask}"/>

    //I tried this too:
    //<ContentControl Content="{Binding GridMask}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Grid>

Прямоугольник отображается в виде темного прямоугольника на синем фоне, но он составляет всего 100 x 100 пикселей.Если ширина и высота не заданы, прямоугольник растягивается, но у меня нет координат для работы.Отсечение закомментировано.

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

Спасибо.

1 Ответ

0 голосов
/ 12 февраля 2019

Коллега показал мне простой обходной путь:

Прослушивание GridMask.SizeChanged в конструкторе и вызов функции отсечения из метода GridMask_SizeChanged.Это дает нам систему координат для работы с GridMask.ActualWidth и GridMask.ActualHeight.

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