20

リストボックスにバインドされているコレクションのwpfアプリケーションでビジネスオブジェクトのdataTemplateを定義しようとしています。

<UserControl.Resources>
    <DataTemplate x:Key="ResizedItemsDataTemplate" DataType="{x:Type resizer:ResizeMonitorItem}">
              <Border x:Name="bdr" BorderBrush="Blue" 
                                     BorderThickness="1" 
                                     CornerRadius="2" 
                                     Width="auto"
                                     HorizontalAlignment="Stretch"
                                     VerticalAlignment="Stretch">
                    <Grid Margin="2">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="14"></RowDefinition>
                            <RowDefinition Height="14"></RowDefinition>
                        </Grid.RowDefinitions>


                        <TextBlock Grid.Row="0" Text="{Binding SaveAsFileName}"></TextBlock>
                        <TextBlock Grid.Row="1" Text="{Binding ResizedImageFilePath}"></TextBlock>
                    </Grid>
             </Border>
    </DataTemplate>
</UserControl.Resources>
<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0">    
    <Border BorderThickness="0,0,0,5" BorderBrush="DarkGray" >
        <ListBox x:Name="ListBoxResizeItems" ItemsSource="{Binding Path=ResizeItems}" BorderThickness="0" ItemTemplate="{DynamicResource ResizedItemsDataTemplate}">
        </ListBox>
    </Border>
</Grid>

x:Name=bdr で定義された境界線を各リストボックス項目の全幅に広げるにはどうすればよいですか? 現時点では、リストボックス項目の全幅を埋める必要がなく、リストボックス項目ごとに異なる、その内部のテキストブロックのみにまたがっています。

4

3 に答える 3

54

これはおそらく、ListBoxItems 自体が ListBox の全幅を占めていないことに関係しています。HorizontalContentAlignment="Stretch"に属性を追加しListBoxて、個々のアイテムが幅いっぱいに引き伸ばされるかどうかを確認します。

于 2009-01-20T11:15:20.737 に答える
2

Horizo​​ntalContentAlignment は、私が試していたものと比較して、素晴らしくクリーンなソリューションです。ありがとう!

ALMOST が機能したのは次のとおりですが、ダイアログ ボックスのアニメーションがどんどん大きくなり、永遠に広がります。

Width="{Binding ActualWidth, 
        RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}"
于 2010-11-19T17:08:39.670 に答える
2

それを解決しました。秘訣は、リストボックスに Horizo​​ntalContentAlignment="Stretch" を設定して、コンテンツのみに合わせるのではなく、そのコンテンツを幅いっぱいに広げることです。

 <ListBox x:Name="ListBoxResizeItems" 
                HorizontalContentAlignment="Stretch"
                ItemsSource="{Binding Path=ResizeItems}" 
                BorderThickness="0"                                         
                ItemTemplate="{DynamicResource ResizedItemsDataTemplate}" >
        </ListBox>

Matt さん、申し訳ありませんが、この投稿を入力しているときに、あなたの回答が得られました。

于 2009-01-20T11:22:43.967 に答える