WPF DockPanelは、「塗りつぶし」コントロールの希望のサイズを尊重していません

StackOverflow https://stackoverflow.com/questions/2403454

  •  18-09-2019
  •  | 
  •  

質問

私は次のXAML(簡潔にするために簡略化が、XamlpadまたはKaxamlで問題をREPROます)を持っています

<DockPanel Width="400">
    <TextBlock DockPanel.Dock="Left" TextWrapping="Wrap">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        Vestibulum massa metus, ornare in fringilla nec, fringilla at orci.
        Nunc pharetra enim sit amet sapien aliquet eu euismod turpis vehicula.
        Aenean gravida tempus lectus ut ornare. 
            Nullam massa augue, suscipit vel consectetur fringilla, pretium vitae neque.
    </TextBlock>
    <Button MinWidth="100" VerticalAlignment="Center" HorizontalAlignment="Left">Hello world</Button>
</DockPanel>

私の問題は、私はボタンはスペースの最小100pxにをしたいということで、テキストのそのスペースを残すために、適切にラップします。しかし、何が起こるかは、テキストはできるだけ400ピクセルに近いラップし、その後、ボタンがクリップされていることである。

私は出力をスヌープした場合、

私はボタンが希望100pxにでレンダリングしていることがわかりますが、それは、DockPanelの側面を切り取られています。

私はドックを逆にした場合、

私は私がしたいレイアウトを取得するが、残念ながらそれは、周囲のレイアウトにオプションではありません、その後(そのボタンが「右」ドッキングされているとのTextBlockがいっぱいになった)。

のminWidthを尊重する方法で、私はそれがDockPanel a)はクリップしないようになります行うことができるものとb)のレイアウトはありますか?それとも私は、代替レイアウトメカニズムを発見立ち往生だ?

事前に感謝します!

役に立ちましたか?

解決

ああ、私はダムだ、とあまりにも長い間同じコードを見つめていました。マイ遠すぎる、簡単な解決策は、グリッドを使用していた。

<Grid Width="400">
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="Auto" />
  </Grid.ColumnDefinitions>
  <Button  Grid.Column="1" MinWidth="100" VerticalAlignment="Center" HorizontalAlignment="Left">Hello world</Button>
  <TextBlock TextWrapping="Wrap" Grid.Column="0">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit.
      Vestibulum massa metus, ornare in fringilla nec, fringilla at orci.
      Nunc pharetra enim sit amet sapien aliquet eu euismod turpis vehicula.
      Aenean gravida tempus lectus ut ornare. 
      Nullam massa augue, suscipit vel consectetur fringilla, pretium vitae neque.
  </TextBlock>
</Grid>

私自身の愚かな質問に対する謝罪!

他のヒント

あなたは右のボタンをドッキングすると、テキストブロックが残りの部分を埋めるようにする必要があります。ここでは、対応するXAMLがあります:

<DockPanel Width="400">
    <Button DockPanel.Dock="Right" MinWidth="100" VerticalAlignment="Center" HorizontalAlignment="Left">Hello world</Button>
    <TextBlock TextWrapping="Wrap">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        Vestibulum massa metus, ornare in fringilla nec, fringilla at orci.
        Nunc pharetra enim sit amet sapien aliquet eu euismod turpis vehicula.
        Aenean gravida tempus lectus ut ornare. 
        Nullam massa augue, suscipit vel consectetur fringilla, pretium vitae neque.
    </TextBlock>
</DockPanel>

よろしく、
オリバーハナッピ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top