私はカスタムアイテムを持つ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のために伸張するHorizontalContentAlignment。私はいくつかの国境を使って問題のある作品を見つけました。 ListBoxItemsは、全体の幅、usercontrolとそのグリッドもとっているようです。私はグリッドのColumnDefinition内のWidth="*"
がそれを行うと思ったが、テキストボックスはすべてのスペースを取らない。
もう一つのアイデアは、テキストボックスの幅を親のサイズにバインドすることでしたが、左のテキストボックスのスペースも取ることになりました(これは全体の幅を取得するため意味があります)。
私は間違っていますか?
ユーザーコントロール内のTextBoxにHorizontalContent =ストレッチを試してみて、テキストのTextAllignmentを使用しています。これにGridViewを使用してみませんか? – Paparazzi
HorizontalContentではなくHorinzontalAlignmentを意味しましたか?これはうまくいった。正直言って、グリッドビューの代わりにグリッドを使用している理由はわかりません。 – Sentropie