2011-09-21 9 views
5

リストボックスはリストボックスを持っていますので、リストボックスのアイテムはリストボックスのサイズに伸びます。リストボックスの幅に伸びるリストボックスのアイテムですが、幅を超えていません

各リストボックスアイテムは、情報の幅が約150、残りのサイズが説明のテキストボックスになるデータテンプレートになります。私は説明テックスボックスを残っている利用可能なサイズに伸ばしてほしい。

<Window x:Class="test.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <ListBox Margin="20,20,20,20" ItemsSource="{Binding Path=List}"> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="HorizontalContentAlignment" 
        Value="Stretch" /> 
     </Style> 
    </ListBox.ItemContainerStyle> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Border BorderBrush="AliceBlue" 
        BorderThickness="1"> 
       <Grid> 
       <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="150" /> 
       <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions> 
       <Label Width="20" 
         Content="Test" /> 
       <ComboBox Width="130" /> 
       <TextBox Grid.Column="1" 
          HorizontalAlignment="Stretch" 
          HorizontalContentAlignment="Stretch" /> 
       </Grid> 
      </Border> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    </ListBox> 

しかし、私はテキストボックスに入力したテキストの幅は、リストボックスの幅を過ぎて行くとき、リストボックスの項目が増え続けて:だからここに私はこのレイアウトを作成するだろうと思った例のXAMLは、水平スクロールバーが表示されます。

私が達成したいのは、テキストボックスの最大幅がリストボックスまで上がり、大きくならないことです。誰も私はこのレイアウトを達成する方法を知っていますか?

答えて

6

ScrollViewer.HorizontalScrollBarVisibility="Disabled"ListBoxを追加してみてください。

+0

これは完璧に働いた、ありがとう! – cab

2

問題はリストボックスにスクロールビューアが含まれていることです。つまり、スクロールビューアで子どもが任意のサイズを持つことができ、スクロールビューアがそれを処理します。あなたのColumnDefinitionは実質的に「私たちが持っている無制限のスペースをすべて使用する」と言います。私の心に来る 一つの解決策は、リストボックスActualWidth

Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=ActualWidth}" 

にグリッド幅をバインドするだろうが、propably良くはDmitrysソリューションです。

関連する問題