0

2 番目の列が固定幅で、最初の列の右側にある 2 つの列を持つ WPF パネルが必要です。最初の列は自動サイズ調整されます。2 番目の列は常に最初の列の直後に配置する必要がありますが、ウィンドウ (または親要素) が狭すぎて最初の列または最初の列の一部しか収まらない場合でも失われないようにします。

次のように DockPanel を使用すると:

<DockPanel DockPanel.Dock="Top">
  <Label Content="I am autosize" DockPanel.Dock="Left" />
  <Label Content="I come right after the first column" />
</DockPanel>

最初の列が表示され、2 番目の列はその直後にあり、ウィンドウのサイズを変更して幅を狭くすると、最初に 2 番目の列が消えるまでトリミングされ、最初の列がトリミングされます。

これを使用する場合:

<DockPanel DockPanel.Dock="Top">
  <Label Content="I come right after the first column" DockPanel.Dock="Right" />
  <Label Content="I am autosize" />
</DockPanel>

2番目の列は2番目にトリミングされ始めますが、ウィンドウが十分に広い場合、最初の列をフィルドッキングした直後ではなく、右側にドッキングされます。最初の列は自動サイズ調整されません。

グリッドを使用しようとしたとき、結果は基本的に同じでした。列の幅を *、20、* に設定しても機能しません。*、20、自動でも、希望どおりに動作しません。

いくつかのパネル(できればDockPanel)とレイアウトプロパティの組み合わせを使用して、2番目の列を常に最初の列のすぐ右側に表示することもできますか?親要素の幅なので、この場合の 2 番目の列は右ドッキングされ、最初の列は完全にドッキングされているように見えますか?

ありがとう!

4

1 に答える 1

0

グリッドコントロールの使用を試みることができます。

<Window x:Class="WpfApplication6.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" 
    MinWidth="200">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition  MinWidth="200"/>
    </Grid.ColumnDefinitions>
    <TextBlock Text="I am autosize" 
                   Background="Red" />
    <TextBlock Text="I come right after the first column" 
                   Grid.Column="1" 
                   Background="AliceBlue" 
                   Width="200" 
                   HorizontalAlignment="Left" />
</Grid>

唯一の問題は、親コントロールのMinWidthも固定サイズ(この例ではウィンドウ)に設定する必要があることです。これがお役に立てば幸いです。

于 2013-03-19T16:11:29.323 に答える