У меня есть Canvas
с Grid
на нем.Сетка содержит 3 столбца.Первый столбец содержит еще один Grid
, второй ничего не содержит, третий содержит изображение (поле).(У меня есть пустой столбец для анимации, не связанный с этим вопросом.)
У моего ребенка Grid
У меня есть 2 строки.Первая строка содержит UserControl (полки с полками), вторая содержит изображение (штрих-код).
Проблема в том, что механизм компоновки, похоже, полностью игнорирует размеры пользовательского элемента управления.В предварительном просмотре я вижу свой UserControl и прямо поверх него два других изображения.Предоставленный Canvas
автоматически не измеряет его дочерние элементы, но я разрешил это с помощью некоторых операторов изменения размера в событии SizeChanged
страницы.
В действительности, поле отображается во время выполнения в нижней части.в правом углу моего окна, как и должно быть, однако штрих-код выглядит так, как будто пользовательский элемент управления не существует.
Для иллюстрации моей проблемы см. http://www.wynright.com/temp/Problem.png
Ниже приведены моиКод XAML:
<Canvas x:Name="MainCanvas" Background="Silver">
<Grid Name="LayoutRoot">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid Name="LayoutChild" Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<LightPickDemo:Picker x:Name="PickZone" ZoneCleared="PickZone_ZoneCleared" HorizontalAlignment="Left" VerticalAlignment="Top" />
<Image Name="BarCode" Source="/LightPickDemo;component/Images/BarcodeScan.png" HorizontalAlignment="Center" Stretch="None" VerticalAlignment="Center" Grid.Row="1" />
</Grid>
<Image Name="imgShippingBox" Source="/LightPickDemo;component/Images/Empty-Box.png" VerticalAlignment="Bottom" Stretch="None" Grid.Column="2" />
</Grid>
</Canvas>
Поэтому мне интересно, что мне нужно сделать, чтобы UserControl предложил свой размер для механизма компоновки.Я вижу в своем конструкторе размер элемента управления, поэтому ясно, что компилятор знает, что для этого элемента управления есть размер.
Я бы хотел, чтобы штрих-код отображался по центру ниже UserControl.
ЗдесьXAML для UserControl:
<Canvas>
<Image Name="ImageBase" Source="/LightPickDemo;component/Images/BayShelves.png" />
<LightPickDemo:ZoneLight x:Name="ZoneLight" Canvas.Left="345" Canvas.Top="0" ButtonPress="ZoneLight_ButtonPress" />
<LightPickDemo:PickerModule x:Name="pickerCalculator" Canvas.Left="74" Canvas.Top="266" OnPicked="Picker_PickChanged" />
<LightPickDemo:PickerModule x:Name="pickerCalendar" Canvas.Left="207" Canvas.Top="266" OnPicked="Picker_PickChanged" />
<LightPickDemo:PickerModule x:Name="pickerPaperClip" Canvas.Left="521" Canvas.Top="266" OnPicked="Picker_PickChanged" />
<LightPickDemo:PickerModule x:Name="pickerRuler" Canvas.Left="649" Canvas.Top="266" OnPicked="Picker_PickChanged" />
<LightPickDemo:PickerModule x:Name="pickerScissor" Canvas.Left="75" Canvas.Top="532" OnPicked="Picker_PickChanged" />
<LightPickDemo:PickerModule x:Name="pickerStapler" Canvas.Left="250" Canvas.Top="532" OnPicked="Picker_PickChanged" />
<LightPickDemo:PickerModule x:Name="pickerStapleRemover" Canvas.Left="435" Canvas.Top="532" OnPicked="Picker_PickChanged" />
<LightPickDemo:PickerModule x:Name="pickerTapeDispenser" Canvas.Left="635" Canvas.Top="532" OnPicked="Picker_PickChanged" />
</Canvas>