Вопрос

Как сделать ширину сетки на 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top