我想要創建一個包含兩個區域,一個'float:left'和一個'float:right'的佈局的ListBoxItem,其中整個項目填充分配給ListBox和填充其容器的ListBox的整個寬度(即擴大以填補可用空間)。如何在XAML中複製'float:right'?
如何在XAML中實現這一點?
感謝
我想要創建一個包含兩個區域,一個'float:left'和一個'float:right'的佈局的ListBoxItem,其中整個項目填充分配給ListBox和填充其容器的ListBox的整個寬度(即擴大以填補可用空間)。如何在XAML中複製'float:right'?
如何在XAML中實現這一點?
感謝
對於「項目整體填充分配到ListBox整個寬度」,你需要這樣的風格:
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
和可選的列表框禁用水平滾動:
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" .. >
對於DataTemplate的根面板,您可以使用一個DockPanel:
<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>
感謝你的這一點,你讓我的方式來實現我在找的東西。 – MalcomTucker
使用Grid
定位或碼頭元件到窗體/面板的各個部分。
你可以在列表框項目模板中使用網格嗎? – MalcomTucker
XAML的美妙之處在於,你幾乎可以使用其他任何東西中的任何東西。如果你不得不問這個問題,答案(大約99%的時間)總是會是一個響亮的** YES **。 – qJake
好的,謝謝。我是XAML新手 - 如果您有時間可以提供代碼示例?只是一個骨架將是偉大的!謝謝 – MalcomTucker
這是我會做的方式:
<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>
您可以使用一個表或網格組件,設置一個或兩列,將自動-尺寸。 –