Как заставить Usercontrol сохранять свой размер после размещения на странице? - PullRequest
0 голосов
/ 25 октября 2019

Я создаю приложение UWP. В приложении я создал Usercontrol, который имеет прямоугольник установленного размера внутри него. Размер 700х700. Я также установил для Usercontrol значение 700x700.

Я думал, что это сработает, когда разработчик помещает пользовательский контроль на страницу, тогда появляется пользовательский контроль размером 700x700.

ОднакоUsercontrol появляется с размером 100x100!

Это код со страницы после того, как я дважды щелкнул элемент управления пользователя на панели инструментов, чтобы добавить его на страницу.

<Custom:Control HorizontalAlignment="Left" Height="100" Margin="254,158,0,0" VerticalAlignment="Top" Width="100"/>

Обратите внимание, что высота и ширина составляют 100x100!

Я установил свойства Высота и Ширина в Usercontrol на 700x700 в XAML и конструкторе классов. Ничего не меняется!

Я установил свойства HorizontalAlignment и VerticalAlignment для всех дочерних элементов управления в пользовательском контроле. Ничего не меняется!

Это XAML Usercontrol

<Usercontrol
    x:Class="Circles.CustomControls.Control"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Circles.CustomControls"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="700" Height="700">

    <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <Canvas x:Name="Container" Background="Transparent" Width="700" Height="700" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
            <Rectangle x:Name="Card" Stroke="Black" Width="700" Height="700" Fill="White" HorizontalAlignment="Left" VerticalAlignment="Top"/>
        </Canvas>
    </Grid>
</UserControl>

Это код позади Usercontrol

public sealed partial class Control : Usercontrol
{
   public Control()
   {
      this.InitializeComponent();
      this.Height = 700;
      this.Width = 700;
   }

}

Я ожидаю, что когда разработчик поместит Usercontrol вЗатем появится пользовательский элемент управления размером 700x700.

ОБНОВЛЕНИЕ 1 Вот некоторые рисунки

Изображение 1 - Это показывает проблему сограничивающий прямоугольник

Image2 - показывает элемент управления DatePicker

и пользовательский элемент управления, и элемент управления Datepicker, добавленные на страницу одинаковым образом.

  • Выберите элемент управления на панели инструментов и перетащите его на страницу.

Изображение1 - это пользовательский контроль

  1. Меньший прямоугольник 100x100
  2. Размер в элементе управления установлен равным 700x700 как для Usercontrol, так и для Canvas
  3. Размер холста отображается как 700x700
  4. VSокна свойств показывают 100x100
  5. VS Страница XAML показывает высоту и ширину как 100x100

Image2 - Datepicker

  1. Ограничивающий прямоугольникследует видимым контурам внутренних элементов управления
  2. Окно свойств VS имеет размер по умолчанию, установленный

@ Нико Чжу - MSFT и @Faenrig - надеюсь, это иллюстрирует мою проблему. Если то, что ты сделал, работает, то я хотел бы знать, что я сделал неправильно или не делаю ?

1 Ответ

1 голос
/ 25 октября 2019

Как заставить Usercontrol сохранять размер после размещения на странице?

Размер Usercontrol будет ограничен его родительским контейнером. если родительский размер был ограничен 100 * 100, размер вашего Usercontrol будет изменен. поэтому, пожалуйста, отредактируйте родительский контейнер.

<StackPanel Orientation="Vertical" Height="700" Width="700">
    <local:CustomLabel/>
</StackPanel>
...