6

この問題は、TextBlockをラップさせることができないことに起因します。基本的に、最後の試みとして、コンテナグリッドの列にMaxWidthを設定しています。私の子ラベルとテキストボックスがまだ彼らが望むこと(悪い子、悪い)をしていて、私のグリッド列のMaxWidth="200"によって制限されていないことに驚いた。

私が本当にやろうとしているのは、TextBlockに利用可能な幅を埋めさせ、必要に応じて折り返すことです。これまでのところ、ユニバース内のすべての既知の親でHorizo​​ntalAlignment = "Stretch"の多くのバリエーションを試した後、明示的なMaxWidth = "400"またはTextBlockに任意の数を設定する以外は、何も機能しません。使用可能な幅を埋めるためにTextBlockが必要であり、固定数に制限されないため、これは適切ではありません。ありがとう!

<ItemsControl>
   <ItemsControl.ItemsPanel>
       <ItemsPanelTemplate>
           <StackPanel />
       </ItemsPanelTemplate>
   </ItemsControl.ItemsPanel>
   <ItemsControl.ItemTemplate>
       <DataTemplate>
           <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition MaxWidth="200" SharedSizeGroup="A" />
                <ColumnDefinition MaxWidth="200" SharedSizeGroup="B" />
            </Grid.ColumnDefinitions>

            <Label VerticalAlignment="Top" Margin="0 5 0 0" Grid.Column="0" Style="{StaticResource LabelStyle}" Width="Auto" Content="{Binding Value.Summary}" />
            <TextBlock Grid.Column="1" Margin="5,8,5,8" FontWeight="Normal"
                       Background="AliceBlue"
                       Foreground="Black" Text="{Binding Value.Description}" 
                       HorizontalAlignment="Stretch"
                       TextWrapping="Wrap" Height="Auto" />
           </Grid>
       </DataTemplate>
   </ItemsControl.ItemTemplate>
</ItemsControl>
4

2 に答える 2

2

Grid 要素間のすべてを Kaxaml に貼り付けて問題を再現しようとしましたが、期待どおりにすべてがラップされます。(バインディングを行っていた場所に通常の文字列を挿入し、Label スタイルを削除しました)。

問題はツリーの上位にある可能性があります。

チャンクを Kaxaml などに貼り付けてテストし、どの親が UI を壊しているかを確認することをお勧めします。

于 2009-02-12T03:28:32.720 に答える
1

この質問に対する回答を提供しました。ItemsControl の代わりに ListView を使用しているだけですが、問題はおそらく同じです。おそらく ItemPresenter の周りに ScrollViewer があり、ItemsControl テンプレートのコピーを編集する必要があります。

WPF ListView TextBlock TextWrapping

于 2011-07-26T22:08:24.240 に答える