2012-01-28 13 views
1

私はカスタムアイテムを持つWPFリストボックスを持っています。各項目は、2つのテキストボックスを含むグリッドからなるユーザーコントロールです。私は、正しいものがすべてのスペースを取ってListBoxItemを埋めることを望む。しかし、私が働くことは、アイテム自体が全体のスペースを占めるが、テキストボックスはそのコンテンツのサイズを取ることである。UserControlのTextBoxがすべての領域を占めていない

だから、これはリストボックスです:

<ListBox x:Name="leftListBox" Grid.Column="0" Margin="10" 
      HorizontalContentAlignment="Stretch"> 
     <ListBox.ItemTemplate> 
      <DataTemplate>      
        <local:CustomLine />      
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

とユーザーコントロール:

<UserControl x:Class="SharpComparer.CustomLine" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Height="30"> 
    <UserControl.Resources> 
     <Style TargetType="{x:Type TextBox}"> 
      <Setter Property="VerticalAlignment" Value="Center" /> 
     </Style> 
    </UserControl.Resources> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="40" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 
     <TextBox x:Name="NumberColumn" x:FieldModifier="public" 
       Text="{Binding LineNumber}" 
       Grid.Column="0" HorizontalAlignment="Right" /> 
     <TextBox x:Name="TextColumn" x:FieldModifier="public" 
       Text="{Binding Text}" 
       Grid.Column="1" HorizontalAlignment="Left" /> 
    </Grid> 
</UserControl> 

私はすでにいくつかのMSDNの記事でいくつかの研究の後にしようと、この辺りのスタックオーバーフローの上に持っているもの:設定Listbox.ItemContainerStyleのために伸張するHorizo​​ntalContentAlignment。私はいくつかの国境を使って問題のある作品を見つけました。 ListBoxItemsは、全体の幅、usercontrolとそのグリッドもとっているようです。私はグリッドのColumnDefinition内のWidth="*"がそれを行うと思ったが、テキストボックスはすべてのスペースを取らない。
もう一つのアイデアは、テキストボックスの幅を親のサイズにバインドすることでしたが、左のテキストボックスのスペースも取ることになりました(これは全体の幅を取得するため意味があります)。

私は間違っていますか?

+0

ユーザーコントロール内のTextBoxにHorizo​​ntalContent =ストレッチを試してみて、テキストのTextAllignmentを使用しています。これにGridViewを使用してみませんか? – Paparazzi

+0

Horizo​​ntalContentではなくHorinzontalAlignmentを意味しましたか?これはうまくいった。正直言って、グリッドビューの代わりにグリッドを使用している理由はわかりません。 – Sentropie

答えて

2

あなたはこのことから、あなたのユーザーコントロールのコードを変更する必要があります。これに

<TextBox x:Name="TextColumn" x:FieldModifier="public" 
       Text="{Binding Text}" 
       Grid.Column="1" HorizontalAlignment="Left" /> 

<TextBox x:Name="TextColumn" x:FieldModifier="public" 
       Text="{Binding Text}" 
       Grid.Column="1" HorizontalAlignment="Stretch" /> 
+0

それはポイントだった、ありがとう! – Sentropie

関連する問題