2009-11-30 3 views
4

Silverlight 처녀는 여기에 있습니다. 내부 눈금 너비를 수용하도록 내 눈금을 둘러싼 사용자 정의 컨트롤의 크기를 자동으로 조정하려면 어떻게해야합니까? 브라우저 윈도우가 훨씬 넓 으면 현재 사용자 컨트롤이 약 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> 

편집 : 나는 기존 웹 응용 프로그램 프로젝트에 실버 라이트 응용 프로그램을 추가 할 때 내가 비주얼 스튜디오 2010의 기본 컨테이너를 만든 사용하고 있음을 추가해야합니다.

<%@ 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에서 개체 태그의 스타일로. 또한 포함 요소 (아마 본문)에 뷰 포트의 높이가 있는지 확인해야합니다. 이것은 "height : 100 %; overflow : hidden;"스타일을 보장함으로써 이루어집니다. html 태그와 body 태그에 있습니다. 여백 : 0px를 본문에 놓고 스크롤 할 때 "body"에 속성 scroll = "no"를 추가하십시오. 이제 Silverlight 컨트롤의 소유와 크기가 브라우저 클라이언트 창 영역으로 넘어갑니다.

또한 Width = "Auto"및 Height = "Auto"를 UserControl에서 제거하십시오.

+0

응답 해 주셔서 감사합니다. 귀하의 모든 제안 (내 UC 너비/높이 표시 줄)이 이미 VS 템플릿에 의해 처리되었다고 생각하면서 질문을 편집했습니다. 하지만 그리드를 보여주는 작은 창이 아직도 있습니다. 아직도 내 머리를 긁적 ... – grenade

+0

내 'HorizontalAlignment = "스트레치"VerticalAlignment = "스트레치"'문제를 일으키는 것으로 밝혀졌다. Data : DataGrid 요소에서 이러한 속성을 수정하면 그리드가 사용 가능한 모든 공간을 차지했습니다. – grenade

관련 문제