2009-05-05 20 views
11

GridViewColumnに列全体を塗りつぶすには、ComboBoxストレッチを作成する際に問題があります。列のサイズが変更されると、サイズも変更されます。WPFコンボボックスを列全体の幅に塗りつぶす

次の例では、StackPanelの中にComboBoxという文字が含まれています。これは伸びるように設定されており、実際には幅がStackPanelになるように伸びます。

次に、StackPanelComboBoxを含むListViewを1つの列に追加します。 StackPanelComboBoxの両方が伸縮するように設定されていますが、伸縮しません。私はStackPanelのサイズを識別するために背景色を使用します。幅を設定したり、幅を必要とするような要素をComboBoxに追加しない限り、赤はありません。

また、私はHorizontalContentAlignmentプロパティで再生することもできませんでした。

<StackPanel Height="59" Margin="45,12,38,0" VerticalAlignment="Top" Background="Green"> 
    <ComboBox HorizontalAlignment="Stretch" /> 
</StackPanel> 

<ListView x:Name="MyListView" Margin="0,106,0,0"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Num" Width="70"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <StackPanel Background="red" Orientation="Horizontal" HorizontalAlignment="Stretch"> 
          <ComboBox HorizontalAlignment="Stretch" /> 
         </StackPanel> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
    <ListViewItem></ListViewItem> 
</ListView> 
+0

司会者のフラグを再設定します。あなたが12月26日と3月6日を逃した(私が間違ったログを見逃していない限り) –

+0

'StackPanel'の代わりに' DockPanel'を使用してください。 – Aaaaaaaa

+0

StackPanelに何かがあるのでなければ、Borderと運が良いかもしれません。 –

答えて

15

ListViewItemStyleを設定してみてください。あなたのStackPanelも削除しました。

<ListView x:Name="MyListView" Margin="0,106,0,0"> 
    <ListView.Resources> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     </Style> 
    </ListView.Resources> 

    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Num" Width="170"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <ComboBox /> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 

    <ListViewItem></ListViewItem> 
</ListView> 
+0

ありがとう!しかし、それは私に新しい問題をもたらします。まあ、簡略化した例で私が質問したところ、それはすべていいですが、私の実際のリストはもっと複雑です。 StackPanelを使用せずにスタイリングを追加するときに、列のサイズを変更するのは本当に遅いです。 Orientation = "Horizo​​ntal"というプロパティを持つ周囲のStackPanelを追加すると、サイズ変更が円滑になります。 この問題は、リスト内に通常> 1000個の要素がある場合に発生します。何を考えているのでしょうか?あなたのソリューションを使用していませんが、Background = "Transparent"を追加すると同じ問題が発生します。私はすべてを試したような気がする。 ありがとう! – stiank81

+2

周囲のStackPanelを水平方向に追加すると、ComboBoxが列全体を埋めるのを止めることができるかもしれません。 – stiank81

+0

まあ、あなたは質問に答えたので、私はこれを閉じます。どうも。 列のサイズ変更のパフォーマンスに関する問題に関する新しい質問を確認してください: http://stackoverflow.com/questions/829242/wpf-column-resize-performance-issues – stiank81

関連する問題