Silverlight Grid Auto Размер не работает внутри холста
-
19-09-2019 - |
Вопрос
Как сделать ширину сетки на 100% внутри холста? Вот какой -то простой XAML, но он не работает, как и ожидалось.
<Canvas Background="MediumSlateBlue" Width="Auto" Height="Auto" >
<Grid x:Name="LayoutRoot" MouseMove="MainPage_MouseMove" Background="Beige" >
<TextBlock x:Name="lblDisplay" Height="24" HorizontalAlignment="Right" VerticalAlignment="Top" Width="128" Text="asdf" ></TextBlock>
</Grid>
</Canvas>
Я не понимаю, почему моя сетка не занимает столько места, сколько может получить руки! Я даже попытался добавить определение одной строки и столбца с шириной 100*, но все же моя сетка займет столько места, сколько и метка, которую он содержит. Цель состоит в том, чтобы иметь холст, с ребенком сеткой и занимает 100% ширину и высоту. Это важно, потому что мне нужен Silverlight, чтобы изменить размер, когда браузер изменяется.
Решение 2
Похоже, я нашел здесь решение
http://forums.silverlight.net/forums/t/13415.aspx
Я скорректировал свой код, чтобы автоматически изменять размер своей сети всякий раз, когда контент изменяется. Это позволит мне позиционировать элементы абсолютно, используя Canvas.leftProperty и поддерживать положение горизонтально/вертикально выровненных элементов.
Я рассматривал возможность использования только сетки в качестве основного макета, однако в случае возникновения необходимости оживить объект, маржа не может быть анимирован. Кроме того, установление маржи влево и верхней части во время события MouseMove не точно позиционировало мой элемент в положение курсора.
Другие советы
Canvas излагает свое содержание, используя абсолютное позиционирование. Это гораздо больше похоже на то, как работают формы Windows в том, что все элементы должны иметь указанные верхние, левые, ширину и высоту.
Вы можете достичь аналогичной функциональности, заменив холст на сетку, в которой не определены строки/столбцы, и используйте маржу для размещения детских элементов.
Также проверьте, чтобы убедиться, что ваша форма на самом деле растягивает приложение Silverlight.
<form id="form1" runat="server" style="height:100%">
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="clientbin/MyApp.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="3.0.40818.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
</form>