2013-05-08 53 views
0

我有一个固定宽度的StackPanel。在StackPanel里面,我有一个GridView,其中Width应该被限制在它的父宽度(像宽度=“*”一样)。从父级继承的GridView宽度

我的样品XAML:

<StackPanel Orientation="Horizontal" Width="300" Height="300"> 
     <TextBox Width="50" Margin="0" Height="50" Background="Blue"></TextBox> 
     <GridView > 
      <GridView.ItemsPanel> 
       <ItemsPanelTemplate> 
        <WrapGrid Orientation="Horizontal" FlowDirection="LeftToRight" /> 
       </ItemsPanelTemplate> 
      </GridView.ItemsPanel> 
      <GridView.Items> 
       <TextBox Width="50" Margin="0" Height="50" Background="Green"></TextBox> 
       <TextBox Width="50" Margin="0" Height="50" Background="Green"></TextBox> 
       <TextBox Width="50" Margin="0" Height="50" Background="Green"></TextBox> 
       <TextBox Width="50" Margin="0" Height="50" Background="Green"></TextBox> 
       <TextBox Width="50" Margin="0" Height="50" Background="Green"></TextBox> 
      </GridView.Items> 
     </GridView> 
    </StackPanel> 

在这个例子中GridView宽度比母体更宽,所以它的一些项的不显示(未包裹的)。当我将GridView宽度设置为固定值时,项目被打包,但我无法在我的项目中使用固定值。

+1

为什么在GridView中使用TextBox?请参阅[WINDOWS 8的GRIDVIEW - 不是为数据输入!](http://netitude.bc3tech.net/2013/04/12/windows-8s-gridviewnot-meant-for-data-entry/) – Xyroid 2013-05-08 11:34:42

+0

TextBoxes在我的例子中只用作示例项目,实际上我只在该GridView中提供数据 – filip 2013-05-08 11:38:17

回答

1

在这种情况下,使用Grid而不是StackPanel更有利。下面的代码将达到预期的效果(GridView将占用TextBox旁边的任何未使用的空间)。

<Grid Width="300" Height="300"> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="50" /> 
    <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 
      <TextBox Grid.Column="0" Height="50" Background="Blue"></TextBox> 
      <GridView Grid.Column="1"> 
       <GridView.ItemsPanel> 
        <ItemsPanelTemplate> 
         <WrapGrid Orientation="Horizontal" FlowDirection="LeftToRight" /> 
        </ItemsPanelTemplate> 
       </GridView.ItemsPanel> 
       <GridView.Items> 
        <TextBox Width="50" Margin="0" Height="50" Background="Green"/> 
        <TextBox Width="50" Margin="0" Height="50" Background="Green"/> 
        <TextBox Width="50" Margin="0" Height="50" Background="Green"/> 
        <TextBox Width="50" Margin="0" Height="50" Background="Green"/> 
        <TextBox Width="50" Margin="0" Height="50" Background="Green"/> 
       </GridView.Items> 
      </GridView> 
</Grid> 
0

您可以尝试启用horizo​​ntalscrollmode并将horizo​​ntalscrollbarvisibility设置为true。但数据不会被封装。