2009-11-30 6 views
4

Silverlight virgin здесь. Как заставить usercontrol, окружающий мою сетку, автоматически изменять размер, чтобы разместить ширину сетки внутри? В настоящее время usercontrol отображает примерно 300 или 400 пикселей, когда окно браузера намного шире. Он отображает как вертикальные, так и горизонтальные полосы прокрутки вокруг сетки данных, которая является уродливой. Я хочу установить ширину элемента управления на «100%», но это, похоже, не поддерживается. Что мне не хватает?Silverlight сетка с автоматической шириной и высотой

Вот мой XAML до сих пор:

<UserControl x:Class="RichMedia.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"> 
    <Grid x:Name="LayoutRoot" Background="White"> 
     <data:DataGrid Name="dataGrid1" AutoGenerateColumns="False" 
      HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
      DataContext="{Binding}" /> 
    </Grid> 
</UserControl> 

EDIT: Я хотел бы добавить, что я использую контейнеры по умолчанию в Visual Studio 2010 создано при добавлении SilverLight приложение к существующему веб-приложения проекта.

Ниже разметка со страницы хостинг:

<%@ Page Language="C#" AutoEventWireup="true" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
    <head runat="server"> 
     ... 
     <style type="text/css"> 
      html, body { height: 100%; overflow: hidden; } 
      body { padding: 0; margin: 0; } 
      html, body { height: 100%; overflow: hidden; } 
      #silverlightControlHost { height: 100%; text-align:center; } 
     </style> 
     <script type="text/javascript" src="Scripts/Silverlight.js"></script> 
     ... 
    </head> 
    <body> 
     <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/RichMedia.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=161376" 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> 
    </body> 
</html> 

ответ

5

Вы должны разместить Ширина: 100% и высота: 100% в стиле тега объекта в HTML удерживая ее. Вы также должны убедиться, что содержащий элемент (возможно, тело) имеет высоту порта представления. Это достигается путем обеспечения стиля «высота: 100%, переполнение: скрыто»; находится в теге html и теге body. Поместите маржу: 0px на тело и поместите атрибут scroll = "no" на тело, а также для хорошей меры. Теперь ваш элемент управления Silverlight владеет и имеет размеры в области окна клиента браузера.

Также удалите Width = "Auto" и Height = "Auto" из UserControl.

+0

Спасибо за ответ. Я отредактировал этот вопрос, так как считаю, что все ваши предложения (бар моей ширины/высоты UC) уже были рассмотрены шаблоном VS. Но у меня все еще есть небольшое окно с сеткой. По-прежнему царапая мою голову ... – grenade

+0

Оказалось, что моя «HorizontalAlignment =« Stretch »VerticalAlignment =« Stretch »'вызывала проблему. Когда я удалял эти атрибуты из данных: элемент DataGrid, сетка занимала все доступное пространство. – grenade

Смежные вопросы