2011-09-14 16 views
8

ListBoxに割り当てられた幅全体を塗りつぶした項目と、そのコンテナを満たすListBox(つまり、 'float:right')の2つの領域を含むレイアウトでListBoxItemを作成したいとします。利用可能なスペースを埋めるために拡大する)。XAMLで 'float:right'をどのように複製できますか?

これをXAMLでどうすれば実現できますか?

おかげ

+1

あなたはそのために、テーブルまたはグリッドコンポーネントを使用することができますが、autoに一方または両方の列を設定します-サイズ。 –

答えて

8

DataTemplateのルートパネルでは、ドックパネルを使用することができます。

<DockPanel> 
    <SomeControlLeft DockPanel.Dock="Left" Margin="0 0 5 0" /> 
    <SomeControlRight DockPanel.Dock="Right" Margin="5 0 0 0" /> 
    <SomeControlFill /> 
</DockPanel> 

またはグリッド:

<Grid> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto" /> 
    <ColumnDefinition Width="5" /> 
    <ColumnDefinition Width="*" /> 
    <ColumnDefinition Width="5" /> 
    <ColumnDefinition Width="Auto" /> 
    </Grid.ColumnDefinitions> 

    <SomeControlLeft Grid.Column="0" /> 
    <SomeControlRight Grid.Column="4" /> 
    <SomeControlFill Grid.Column="2" /> 
</Grid> 
+0

これはありがとう、あなたは私が探していたものを達成するために私の道に私を持っています。 – MalcomTucker

0

フォーム/パネルの様々な部分に位置又はドック要素にGridを使用します。

<Style TargetType="ListBoxItem"> 
    <Setter Property="HorizontalAlignment" Value="Stretch" /> 
    <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
</Style> 

と、必要に応じて、リストボックスのために水平方向のスクロールを無効にします:

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" .. > 

あなたはこのようなスタイルを必要とする「総合的なリストボックスに割り当てられた全体の幅を埋める項目」については

+0

リストボックスアイテムテンプレートでグリッドを使用できますか? – MalcomTucker

+0

XAMLの美しさは、他のほとんどのものの中のほとんどすべてを使用できることです。あなたがその質問をする必要がある場合、その答え(時間の約99%)はいつも響きます** YES **。 – qJake

+0

ありがとう。私はXAMLの初心者です - もしあなたが瞬間を持っていれば、コードサンプルを提供できますか?ちょうど骨格が素晴らしいだろう!ありがとう – MalcomTucker

1

これは私がそれを行うような方法である:

<Style x:Key="ListBoxItemStyle" TargetType="ListBoxItem"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Grid Background="Red"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 

         <TextBlock Text="{TemplateBinding Content}"/> 
         <TextBlock Text="{TemplateBinding Tag}" Grid.Column="1"/> 

        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

</UserControl.Resources> 

<Grid x:Name="LayoutRoot" Background="White"> 

    <ListBox ItemContainerStyle="{StaticResource ListBoxItemStyle}"> 
     <ListBoxItem Content="Lorem" Tag="Ipsum"/> 
     <ListBoxItem Content="Hello" Tag="World"/> 
     <ListBoxItem Content="Be" Tag="Happy"/> 
    </ListBox> 

</Grid> 
関連する問題