2014-04-01 92 views
0

摘要WPF網格內容全寬

使其更清晰的未來的讀者,這裏的問題及其修復的摘要。

我的網格坐落在一個頁面中,用作tabitem的內容。在運行時,網格拒絕填充整個tabitem區域,如下面的屏幕截圖所示。

問題是,tabitem的樣式包含一個內容模板,通過contentpresenter顯示頁面,裏面有一個水平的堆疊面板。堆疊面板覆蓋頁面中網格的拉伸屬性。

解決方案是用網格替換樣式中的堆棧面板。沒有更多的佈局問題。

原來的問題

我有一個StackPanel與網格內的標籤和文本框,我想文本框的寬度綁定到網格中的前兩列的寬度。我一直在使用綁定文本框寬度到其父母的方法,並試圖綁定值到東西具有正確的值,但我也嘗試過直接綁定以及沒有運氣。

這是我的XAML:

<Page x:Class="BPC.CPI.Pages.CustomerMaintenance" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:cpihelpers="clr-namespace:BPC.CPI.ControlHelpers" 
    xmlns:robertData="clr-namespace:BPC.Robert.DataEncapsulation;assembly=BPC.Robert" 
    xmlns:robertGlobals="clr-namespace:BPC.Robert.Globals;assembly=BPC.Robert" 
    xmlns:avalon="clr-namespace:AvalonLambdas;assembly=AvalonLambdas" 
    xmlns:converters="clr-namespace:BPC.Utilities.ValueConverters;assembly=BPCUtilities" 
    mc:Ignorable="d" 
    d:DesignHeight="602" d:DesignWidth="1149" 
    Title="CustomerMaintenance" Name="ThisPage" 
    DataContext="{Binding RelativeSource={RelativeSource Self}}"> 
<Page.Resources> 
    <converters:IntegerToBooleanConverter x:Key="IntegerToBooleanConverter"></converters:IntegerToBooleanConverter> 
</Page.Resources> 

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"></RowDefinition> 
     <RowDefinition Height="*"></RowDefinition> 
    </Grid.RowDefinitions> 
    <Grid Grid.Row="0"> 
     <ComboBox ItemsSource="{Binding PageModel.PageUser.AssociatedCustomers}" Name="CbCustomerName" 
        SelectedItem="{Binding PageModel.PageCustomer}" 
        Style="{StaticResource HeadingTwoComboBox}" cpihelpers:ComboBoxHelper.MaxDropDownItems="10"> 
      <ComboBox.ItemContainerStyle> 
       <Style TargetType="ComboBoxItem"> 
        <Setter Property="LayoutTransform" Value="{StaticResource Transform.5x}"></Setter> 
        <Setter Property="Foreground" Value="Black"></Setter> 
       </Style> 
      </ComboBox.ItemContainerStyle> 
     </ComboBox> 
    </Grid> 
    <Grid Name="GridMainContent" Grid.Row="1"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"></ColumnDefinition> 
      <ColumnDefinition Width="20"></ColumnDefinition> 
      <ColumnDefinition Width="*"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 
     <Grid Name="GridGeneralCustomerInfo" Grid.Column="0" > 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"></ColumnDefinition> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="5"></RowDefinition> 
       <RowDefinition Height=".35*"></RowDefinition> 
       <RowDefinition Height="1*"></RowDefinition> 
       <RowDefinition Height=".8*"></RowDefinition> 
      </Grid.RowDefinitions> 
      <StackPanel Name="SpCustomerNotes" Orientation="Vertical" Grid.Column="0" Grid.Row="1" 
         HorizontalAlignment="Left"> 
       <Label Name="LblCustomerNotes" Target="{Binding ElementName=TxtCustomerNotes}" Style="{StaticResource PromptText}" Content="{Binding Path=Text, ElementName=CbCustomerName}" ContentStringFormat="What is special about {0}?"></Label> 
       <TextBox Name="TxtCustomerNotes" AcceptsReturn="True" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" 
         MaxHeight="{Binding Path=ActualHeight, ElementName=SpCustomerNotes, Converter={avalon:LambdaValueConverter (param * 0.65)}}" 
         Text="{Binding PageModel.PageCustomer.CustomerInfo.CP_NOTES}"></TextBox> 
      </StackPanel> 
      <Grid Grid.Column="0" Grid.Row="2"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto"></RowDefinition> 
        <RowDefinition Height="*"></RowDefinition> 
        <RowDefinition Height="*"></RowDefinition> 
        <RowDefinition Height="*"></RowDefinition> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*"></ColumnDefinition> 
        <ColumnDefinition Width="*"></ColumnDefinition> 
       </Grid.ColumnDefinitions> 
       <TextBlock Style="{StaticResource HeadingFourBrown}" Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding Path=Text, ElementName=CbCustomerName, StringFormat=A few questions about \{0\}...}"></TextBlock> 
       <StackPanel Name="SpReportingType" Orientation="Vertical" Grid.Row="1" Grid.Column="0" Margin="6,0,0,0"> 
        <Label Name="LblReportingType" Target="{Binding ElementName=TxtReportingType}" Style="{StaticResource PromptText}" Content="Contractual or actual reporting?"></Label> 
        <ComboBox Name="CbReportingType" Style="{StaticResource ComboBoxWithoutBackground}" SelectedValuePath="REPORTING_TYPE_ID" 
           ItemsSource="{Binding PageModel.PageSelection.ReportingTypes}" DisplayMemberPath="NAME" 
           SelectedValue="{Binding PageModel.PageCustomer.CustomerInfo.REPORTING_TYPE_ID}"></ComboBox> 
       </StackPanel> 
       <StackPanel Name="SpReportingLevel" Orientation="Vertical" Grid.Row="2" Grid.Column="0" Margin="6,0,0,0"> 
        <Label Name="LblReportingLevel" Target="{Binding ElementName=TxtReportingLevel}" Style="{StaticResource PromptText}" Content="How should we roll up data?"></Label> 
        <ComboBox Name="CbReportingLevel" Style="{StaticResource ComboBoxWithoutBackground}" SelectedValuePath="REPORTING_LEVEL_ID" 
           ItemsSource="{Binding PageModel.PageSelection.ReportingLevel}" DisplayMemberPath="NAME" 
           SelectedValue="{Binding PageModel.PageCustomer.CustomerInfo.REPORTING_LEVEL_ID}"></ComboBox> 
       </StackPanel> 
       <StackPanel Name="SpReportingPounds" Orientation="Vertical" Grid.Row="3" Grid.Column="0" Margin="6,0,0,0"> 
        <Label Name="LblReportingPounds" Target="{Binding ElementName=TxtReportingPounds}" Style="{StaticResource PromptText}" Content="Net or gross weights?"></Label> 
        <ComboBox Name="CbReportingPounds" Style="{StaticResource ComboBoxWithoutBackground}" SelectedValuePath="REPORTING_LBS_ID" 
           ItemsSource="{Binding PageModel.PageSelection.ReportingPounds}" DisplayMemberPath="NAME" 
           SelectedValue="{Binding PageModel.PageCustomer.CustomerInfo.REPORTING_LBS_ID}"></ComboBox> 
       </StackPanel> 
       <StackPanel Name="SpInventoryLevel" Orientation="Vertical" Grid.Row="1" Grid.Column="1" Margin="6,0,0,0"> 
        <Label Name="LblInventoryLevel" Target="{Binding ElementName=TxtInventoryLevel}" Style="{StaticResource PromptText}" Content="Customer or title?"></Label> 
        <ComboBox Name="CbInventoryLevel" Style="{StaticResource ComboBoxWithoutBackground}" SelectedValuePath="INV_RPT_LEVEL_ID" 
           ItemsSource="{Binding PageModel.PageSelection.InventoryReportingLevel}" DisplayMemberPath="NAME" 
           SelectedValue="{Binding PageModel.PageCustomer.CustomerInfo.INV_RPT_LEVEL_ID}"></ComboBox> 
       </StackPanel> 
       <StackPanel Name="SpReportByPO" Orientation="Vertical" Grid.Row="2" Grid.Column="1" Margin="6,0,0,0"> 
        <Label Name="LblReportByPO" Target="{Binding ElementName=TxtReportByPO}" Style="{StaticResource PromptText}" Content="Do we report by PO?"></Label> 
        <CheckBox Name="ChkReportByPO" Style="{DynamicResource SliderCheckBox}" HorizontalAlignment="Left" Checked="ChkReportByPO_Checked" 
           IsChecked="{Binding PageModel.PageCustomer.CustomerInfo.IS_REPORTED_BY_PO, Converter={StaticResource IntegerToBooleanConverter}}"></CheckBox> 
       </StackPanel> 
      </Grid> 
      <Grid Name="GridMiscellaneous" Grid.Column="0" Grid.Row="3"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto"></RowDefinition> 
        <RowDefinition Height="*"></RowDefinition> 
        <RowDefinition Height="5"></RowDefinition> 
        <RowDefinition Height="*"></RowDefinition> 
        <RowDefinition Height="5"></RowDefinition> 
        <RowDefinition Height="*"></RowDefinition> 
       </Grid.RowDefinitions> 
       <TextBlock Style="{StaticResource HeadingFourBrown}" Grid.Row="0" Text="Other stuff"></TextBlock> 
       <StackPanel Name="SpSaveDirectory" Orientation="Vertical" Grid.Row="1" Margin="6,0,0,0"> 
        <Label Name="LblSaveDirectory" Target="{Binding ElementName=TxtSaveDirectory}" Style="{StaticResource PromptText}" Content="Where should saved reports go?"></Label> 
        <TextBox Name="TxtSaveDirectory" ></TextBox> 
       </StackPanel> 
       <StackPanel Name="SpFrequency" Orientation="Vertical" Grid.Row="3" Margin="6,0,0,0"> 
        <Label Name="LblFrequency" Target="{Binding ElementName=TxtFrequency}" Style="{StaticResource PromptText}" Content="{Binding Path=Text, ElementName=CbCustomerName}" ContentStringFormat="How often do you run reports for {0}?"></Label> 
        <TextBox Name="TxtFrequency" ></TextBox> 
       </StackPanel> 
       <StackPanel Name="SpHoursPerReport" Orientation="Vertical" Grid.Row="5" Margin="6,0,0,0"> 
        <Label Name="LblHoursPerReport" Target="{Binding ElementName=TxtHoursPerReport}" Style="{StaticResource PromptText}" Content="How many hours do you spend per report (whole hours)?"></Label> 
        <TextBox Name="TxtHoursPerReport" ></TextBox> 
       </StackPanel> 
      </Grid> 
     </Grid> 
     <Grid Name="GridCustomerPeopleAndTitles" Grid.Column="2"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="1.2*"></RowDefinition> 
       <RowDefinition Height="1.5*"></RowDefinition> 
       <RowDefinition Height=".8*"></RowDefinition> 
      </Grid.RowDefinitions> 
      <Grid Name="GridCustomerPeople" Grid.Row="0"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto"></RowDefinition> 
        <RowDefinition Height="*"></RowDefinition> 
        <RowDefinition Height="*"></RowDefinition> 
        <RowDefinition Height="*"></RowDefinition> 
       </Grid.RowDefinitions> 
       <TextBlock Name="TxtbCustomerPeople" Grid.Row="0" Style="{StaticResource HeadingFourBrown}" Text="{Binding Path=Text, ElementName=CbCustomerName, StringFormat=These people also work with \{0\}}"></TextBlock> 
       <StackPanel Orientation="Vertical" Grid.Row="1" Margin="6,0,0,0"> 
        <Label Name="LblSalesReps" Style="{StaticResource PromptText}" Content="Sales Reps:"></Label> 
        <TextBlock Name="TxtbSalesReps" Text="{Binding PageModel.PageCustomer.SalesReps}" TextTrimming="CharacterEllipsis" MaxWidth="550"></TextBlock> 
       </StackPanel> 
       <StackPanel Orientation="Vertical" Grid.Row="2" Margin="6,0,0,0"> 
        <Label Name="LblBillers" Style="{StaticResource PromptText}" Content="Billers:"></Label> 
        <TextBlock Name="TxtbBillers" Text="{Binding PageModel.PageCustomer.Billers}" TextTrimming="CharacterEllipsis" MaxWidth="550"></TextBlock> 
       </StackPanel> 
       <StackPanel Orientation="Vertical" Grid.Row="3" Margin="6,0,0,0" HorizontalAlignment="Stretch"> 
        <Label Name="LblCams" Style="{StaticResource PromptText}" Content="Customer Account Managers:"></Label> 
        <TextBlock Name="TxtbCams" Text="{Binding PageModel.PageCustomer.CAMs}" TextTrimming="CharacterEllipsis"></TextBlock> 
       </StackPanel> 
      </Grid> 
      <Grid Name="GridTitleGroups" Grid.Row="1"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto"></RowDefinition> 
        <RowDefinition Height="*"></RowDefinition> 
       </Grid.RowDefinitions> 
       <TextBlock Name="TxtbTitleGroups" Grid.Row="0" Style="{StaticResource HeadingFourBrown}" Text="{Binding Path=Text, ElementName=CbCustomerName, StringFormat=Group \{0\}\'s titles}"></TextBlock> 
       <Grid Grid.Row="1"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="15"></ColumnDefinition> 
         <ColumnDefinition Width="*"></ColumnDefinition> 
         <ColumnDefinition Width="10"></ColumnDefinition> 
         <ColumnDefinition Width="*"></ColumnDefinition> 
         <ColumnDefinition Width="15"></ColumnDefinition> 
        </Grid.ColumnDefinitions> 
        <ListBox Name="ListTitles" ItemsSource="{Binding}" Grid.Column="1" ToolTip="{Binding Source={x:Static robertGlobals:Messages.DragTitles}}"> 

        </ListBox> 
        <Border Grid.Column="3" Style="{StaticResource BlueBorder}"> 
         <Grid Name="GridTitleGroupItems" Grid.Column="3"> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="30"></RowDefinition> 
          <RowDefinition Height="*"></RowDefinition> 
         </Grid.RowDefinitions> 
          <Rectangle Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Fill="{StaticResource BrownAccentBrush}" OpacityMask="{StaticResource StrongOpacityMaskBrush}" 
             ToolTip="{Binding Source={x:Static robertGlobals:Messages.DragTitlesNew}}"></Rectangle> 
          <TextBlock Name="TxtbNewTitleGroup" Grid.Row="0" Text="Create a New Group" AllowDrop="True" HorizontalAlignment="Center" 
           VerticalAlignment="Center" Style="{StaticResource GreenAccentText}" ToolTip="{Binding Source={x:Static robertGlobals:Messages.DragTitlesNew}}"></TextBlock> 
          <TreeView Name="TreeTitleGroups" ItemsSource="{Binding}" AllowDrop="True" Grid.Row="1" BorderBrush="{x:Null}" ToolTip="{Binding Source={x:Static robertGlobals:Messages.DragTitles}}"> 

         </TreeView> 
        </Grid> 
        </Border> 
       </Grid> 
      </Grid> 
      <Grid Name="GridCustomerGroups" Grid.Row="2"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto"></RowDefinition> 
        <RowDefinition Height="*"></RowDefinition> 
       </Grid.RowDefinitions> 
       <TextBlock Name="TxtbCustomerGroups" Grid.Row="0" Style="{StaticResource HeadingFourBrown}" Text="{Binding Path=Text, ElementName=CbCustomerName, StringFormat=Group \{0\}\'s customers}"></TextBlock> 
      </Grid> 
     </Grid> 
    </Grid> 
</Grid> 
</Page> 

我從各種問題和其他網站嘗試了幾種建議的變通辦法,但沒有什麼工作。我嘗試在我想綁定到的單元格上粘貼一個邊框並綁定到它的尺寸,使用標籤嵌套另一個網格,x:命名ColumnDefinition並綁定到ActualWidth等。沒有。作品。

這似乎是wpf中應該非常簡單的事情,而我只是錯過了至關重要的小作品。我浪費了大概三個小時。我究竟做錯了什麼?

編輯:

我才意識到,這似乎是我綁定到整個GridMainContent的寬度 - 我不是。這只是一種虛擬價值,已經被我嘗試過的每種不同解決方案所取代。

這是我的問題的圖像。內容應該填滿整個標籤。請注意,周圍的網格大小調整爲以調整內容,而不是調整的內容以適合網格的。我已經爲我的內容定義了每個父元素的Horizo​​ntalAlignment = Stretch的隱式樣式,但似乎沒有任何工作。

我期望它做的是左邊部分(帶下拉框)和右邊部分(銷售代表&等)的寬度相等,填充選項卡的整個內容區域。

whatitdoesbutshouldnt

+0

試着避免綁定,使用WPF佈局。 – user3455395

+0

這是不可接受的。我需要寬度與其父寬度正確縮放。 – Travis

+0

給你的網格兒童Grid.ColumnSpan = 4有什麼問題? – user3455395

回答

0

我終於找到什麼導致內容不恰當的大小。埋在選項卡項目樣式中,ContentTemplate將所有內容放置在水平StackPanel內。我將StackPanel切換爲Grid,瞧!正確的wpf佈局。

1

嘗試粘貼下面的XAML爲WPF窗口內容,不使用tabs-我已經做了和佈局是好的:

你能否確認是佈局是正確的?我最好的選擇是 - 根網格的父節點以某種方式限制可用空間,所以可用寬度小於屏幕寬度。檢查所有可用空間是否用石灰塗漆。

XAML:

<Grid Background="Lime"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"></RowDefinition> 
      <RowDefinition Height="*"></RowDefinition> 
     </Grid.RowDefinitions> 
     <Grid Grid.Row="0"> 
      <ComboBox ItemsSource="{Binding PageModel.PageUser.AssociatedCustomers}" Name="CbCustomerName" 
        SelectedItem="{Binding PageModel.PageCustomer}" 
        > 
       <ComboBox.ItemContainerStyle> 
        <Style TargetType="ComboBoxItem"> 
         <Setter Property="LayoutTransform" ></Setter> 
         <Setter Property="Foreground" Value="Black"></Setter> 
        </Style> 
       </ComboBox.ItemContainerStyle> 
      </ComboBox> 
     </Grid> 
     <Grid Name="GridMainContent" Grid.Row="1"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"></ColumnDefinition> 
       <ColumnDefinition Width="20"></ColumnDefinition> 
       <ColumnDefinition Width="*"></ColumnDefinition> 
      </Grid.ColumnDefinitions> 
      <Grid Name="GridGeneralCustomerInfo" Grid.Column="0" > 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*"></ColumnDefinition> 
       </Grid.ColumnDefinitions> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="5"></RowDefinition> 
        <RowDefinition Height=".35*"></RowDefinition> 
        <RowDefinition Height="1*"></RowDefinition> 
        <RowDefinition Height=".8*"></RowDefinition> 
       </Grid.RowDefinitions> 
       <StackPanel Name="SpCustomerNotes" Orientation="Vertical" Grid.Column="0" Grid.Row="1" 
         HorizontalAlignment="Left"> 
        <Label Name="LblCustomerNotes" Target="{Binding ElementName=TxtCustomerNotes}" Content="{Binding Path=Text, ElementName=CbCustomerName}" ContentStringFormat="What is special about {0}?"></Label> 
        <TextBox Name="TxtCustomerNotes" AcceptsReturn="True" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto" 
         Text="{Binding PageModel.PageCustomer.CustomerInfo.CP_NOTES}"></TextBox> 
       </StackPanel> 
       <Grid Grid.Column="0" Grid.Row="2"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"></RowDefinition> 
         <RowDefinition Height="*"></RowDefinition> 
         <RowDefinition Height="*"></RowDefinition> 
         <RowDefinition Height="*"></RowDefinition> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*"></ColumnDefinition> 
         <ColumnDefinition Width="*"></ColumnDefinition> 
        </Grid.ColumnDefinitions> 
        <TextBlock Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding Path=Text, ElementName=CbCustomerName, StringFormat=A few questions about \{0\}...}"></TextBlock> 
        <StackPanel Name="SpReportingType" Orientation="Vertical" Grid.Row="1" Grid.Column="0" Margin="6,0,0,0"> 
         <Label Name="LblReportingType" Target="{Binding ElementName=TxtReportingType}" Content="Contractual or actual reporting?"></Label> 
         <ComboBox Name="CbReportingType" SelectedValuePath="REPORTING_TYPE_ID" 
           ItemsSource="{Binding PageModel.PageSelection.ReportingTypes}" DisplayMemberPath="NAME" 
           SelectedValue="{Binding PageModel.PageCustomer.CustomerInfo.REPORTING_TYPE_ID}"></ComboBox> 
        </StackPanel> 
        <StackPanel Name="SpReportingLevel" Orientation="Vertical" Grid.Row="2" Grid.Column="0" Margin="6,0,0,0"> 
         <Label Name="LblReportingLevel" Target="{Binding ElementName=TxtReportingLevel}" Content="How should we roll up data?"></Label> 
         <ComboBox Name="CbReportingLevel" SelectedValuePath="REPORTING_LEVEL_ID" 
           ItemsSource="{Binding PageModel.PageSelection.ReportingLevel}" DisplayMemberPath="NAME" 
           SelectedValue="{Binding PageModel.PageCustomer.CustomerInfo.REPORTING_LEVEL_ID}"></ComboBox> 
        </StackPanel> 
        <StackPanel Name="SpReportingPounds" Orientation="Vertical" Grid.Row="3" Grid.Column="0" Margin="6,0,0,0"> 
         <Label Name="LblReportingPounds" Target="{Binding ElementName=TxtReportingPounds}" Content="Net or gross weights?"></Label> 
         <ComboBox Name="CbReportingPounds" SelectedValuePath="REPORTING_LBS_ID" 
           ItemsSource="{Binding PageModel.PageSelection.ReportingPounds}" DisplayMemberPath="NAME" 
           SelectedValue="{Binding PageModel.PageCustomer.CustomerInfo.REPORTING_LBS_ID}"></ComboBox> 
        </StackPanel> 
        <StackPanel Name="SpInventoryLevel" Orientation="Vertical" Grid.Row="1" Grid.Column="1" Margin="6,0,0,0"> 
         <Label Name="LblInventoryLevel" Target="{Binding ElementName=TxtInventoryLevel}" Content="Customer or title?"></Label> 
         <ComboBox Name="CbInventoryLevel" SelectedValuePath="INV_RPT_LEVEL_ID" 
           ItemsSource="{Binding PageModel.PageSelection.InventoryReportingLevel}" DisplayMemberPath="NAME" 
           SelectedValue="{Binding PageModel.PageCustomer.CustomerInfo.INV_RPT_LEVEL_ID}"></ComboBox> 
        </StackPanel> 
        <StackPanel Name="SpReportByPo" Orientation="Vertical" Grid.Row="2" Grid.Column="1" Margin="6,0,0,0"> 
         <Label Name="LblReportByPo" Target="{Binding ElementName=TxtReportByPO}" Content="Do we report by PO?"></Label> 
         <CheckBox Name="ChkReportByPo" Style="{DynamicResource SliderCheckBox}" HorizontalAlignment="Left" 
           ></CheckBox> 
        </StackPanel> 
       </Grid> 
       <Grid Name="GridMiscellaneous" Grid.Column="0" Grid.Row="3"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"></RowDefinition> 
         <RowDefinition Height="*"></RowDefinition> 
         <RowDefinition Height="5"></RowDefinition> 
         <RowDefinition Height="*"></RowDefinition> 
         <RowDefinition Height="5"></RowDefinition> 
         <RowDefinition Height="*"></RowDefinition> 
        </Grid.RowDefinitions> 
        <TextBlock Grid.Row="0" Text="Other stuff"></TextBlock> 
        <StackPanel Name="SpSaveDirectory" Orientation="Vertical" Grid.Row="1" Margin="6,0,0,0"> 
         <Label Name="LblSaveDirectory" Target="{Binding ElementName=TxtSaveDirectory}" Content="Where should saved reports go?"></Label> 
         <TextBox Name="TxtSaveDirectory" ></TextBox> 
        </StackPanel> 
        <StackPanel Name="SpFrequency" Orientation="Vertical" Grid.Row="3" Margin="6,0,0,0"> 
         <Label Name="LblFrequency" Target="{Binding ElementName=TxtFrequency}" Content="{Binding Path=Text, ElementName=CbCustomerName}" ContentStringFormat="How often do you run reports for {0}?"></Label> 
         <TextBox Name="TxtFrequency" ></TextBox> 
        </StackPanel> 
        <StackPanel Name="SpHoursPerReport" Orientation="Vertical" Grid.Row="5" Margin="6,0,0,0"> 
         <Label Name="LblHoursPerReport" Target="{Binding ElementName=TxtHoursPerReport}" Content="How many hours do you spend per report (whole hours)?"></Label> 
         <TextBox Name="TxtHoursPerReport" ></TextBox> 
        </StackPanel> 
       </Grid> 
      </Grid> 
      <Grid Name="GridCustomerPeopleAndTitles" Grid.Column="2"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="1.2*"></RowDefinition> 
        <RowDefinition Height="1.5*"></RowDefinition> 
        <RowDefinition Height=".8*"></RowDefinition> 
       </Grid.RowDefinitions> 
       <Grid Name="GridCustomerPeople" Grid.Row="0"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"></RowDefinition> 
         <RowDefinition Height="*"></RowDefinition> 
         <RowDefinition Height="*"></RowDefinition> 
         <RowDefinition Height="*"></RowDefinition> 
        </Grid.RowDefinitions> 
        <TextBlock Name="TxtbCustomerPeople" Grid.Row="0" Text="{Binding Path=Text, ElementName=CbCustomerName, StringFormat=These people also work with \{0\}}"></TextBlock> 
        <StackPanel Orientation="Vertical" Grid.Row="1" Margin="6,0,0,0"> 
         <Label Name="LblSalesReps" Content="Sales Reps:"></Label> 
         <TextBlock Name="TxtbSalesReps" Text="{Binding PageModel.PageCustomer.SalesReps}" TextTrimming="CharacterEllipsis" MaxWidth="550"></TextBlock> 
        </StackPanel> 
        <StackPanel Orientation="Vertical" Grid.Row="2" Margin="6,0,0,0"> 
         <Label Name="LblBillers" Content="Billers:"></Label> 
         <TextBlock Name="TxtbBillers" Text="{Binding PageModel.PageCustomer.Billers}" TextTrimming="CharacterEllipsis" MaxWidth="550"></TextBlock> 
        </StackPanel> 
        <StackPanel Orientation="Vertical" Grid.Row="3" Margin="6,0,0,0" HorizontalAlignment="Stretch"> 
         <Label Name="LblCams" Content="Customer Account Managers:"></Label> 
         <TextBlock Name="TxtbCams" Text="{Binding PageModel.PageCustomer.CAMs}" TextTrimming="CharacterEllipsis"></TextBlock> 
        </StackPanel> 
       </Grid> 
       <Grid Name="GridTitleGroups" Grid.Row="1"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"></RowDefinition> 
         <RowDefinition Height="*"></RowDefinition> 
        </Grid.RowDefinitions> 
        <TextBlock Name="TxtbTitleGroups" Grid.Row="0" Text="{Binding Path=Text, ElementName=CbCustomerName, StringFormat=Group \{0\}\'s titles}"></TextBlock> 
        <Grid Grid.Row="1"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="15"></ColumnDefinition> 
          <ColumnDefinition Width="*"></ColumnDefinition> 
          <ColumnDefinition Width="10"></ColumnDefinition> 
          <ColumnDefinition Width="*"></ColumnDefinition> 
          <ColumnDefinition Width="15"></ColumnDefinition> 
         </Grid.ColumnDefinitions> 
         <ListBox Name="ListTitles" ItemsSource="{Binding}" Grid.Column="1" ToolTip=""> 

         </ListBox> 
         <Border Grid.Column="3"> 
          <Grid Name="GridTitleGroupItems"> 
           <Grid.RowDefinitions> 
            <RowDefinition Height="30"></RowDefinition> 
            <RowDefinition Height="*"></RowDefinition> 
           </Grid.RowDefinitions> 
           <Rectangle Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
             ToolTip=""></Rectangle> 
           <TextBlock Name="TxtbNewTitleGroup" Grid.Row="0" Text="Create a New Group" AllowDrop="True" HorizontalAlignment="Center" 
           VerticalAlignment="Center" ToolTip=""></TextBlock> 
           <TreeView Name="TreeTitleGroups" ItemsSource="{Binding}" AllowDrop="True" Grid.Row="1" BorderBrush="{x:Null}" ToolTip=""> 

           </TreeView> 
          </Grid> 
         </Border> 
        </Grid> 
       </Grid> 
       <Grid Name="GridCustomerGroups" Grid.Row="2"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"></RowDefinition> 
         <RowDefinition Height="*"></RowDefinition> 
        </Grid.RowDefinitions> 
        <TextBlock Name="TxtbCustomerGroups" Grid.Row="0" Text="{Binding Path=Text, ElementName=CbCustomerName, StringFormat=Group \{0\}\'s customers}"></TextBlock> 
       </Grid> 
      </Grid> 
     </Grid> 
    </Grid> 
+0

我粘貼了上面的代碼。不幸的是,石灰區域不會填滿整個可用區域。它在下拉列表末尾停止。 [圖片在這裏](http://i59.tinypic.com/2k30ib.png) – Travis

+0

這證明了實際的網格佈局工作的事實。檢查網格的父級 - 必須將其VerticalAlignment設置爲Left,或者它可以是自定義面板,這會強制其子級佔用儘可能小的空間。 – user3455395

+0

我終於發現問題的原因並予以糾正,這要歸功於解決了本地標記問題。我認爲對每個人來說都是一種有用的策略。 – Travis