尝试本教程 http://www.wpftutorial.net/ListBoxDataTemplate.html
并考虑添加一个单选按钮如下
<ListBox Margin="10" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="60"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="20"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Margin="5" BorderBrush="Black" BorderThickness="1">
<Image Source="{Binding Path=Image}" Stretch="Fill" Width="50" Height="50" />
</Border>
<StackPanel Grid.Column="1" Margin="5" >
<StackPanel Orientation="Horizontal" TextBlock.FontWeight="Bold" >
<TextBlock Text="{Binding Path=Some1}" />
<TextBlock Text="{Binding Path=Firstname, FallbackValue=FirstName}" />
<TextBlock Text="{Binding Path=Lastname, FallbackValue=LastName}" Padding="3,0,0,0"/>
</StackPanel>
<TextBlock Text="{Binding Path=Age, FallbackValue=Age}" />
<TextBlock Text="{Binding Path=Role, FallbackValue=Role}" />
</StackPanel>
<RadioButton Grid.Column="2" Margin="5" HorizontalAlignment="Right" GroupName="A1"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
但结果输出是
将单选按钮对齐到列表框边缘旁边的任何帮助?感谢
答案 0 :(得分:3)
您需要在DataTemplate
内对齐网格的宽度。您可以使用SharedSizeGroup
执行此操作,有关详细信息,请参阅此问题:
How can I make a column in a listbox in WPF the same width for all items?
答案 1 :(得分:3)
首先你需要get the template content to stretch,然后你可以创建一个内容在右边对齐的内容。
答案 2 :(得分:0)
向@ColinE答案添加更多详细信息...
使用SharedSizeGroup。
<ListBox ... Grid.IsSharedSizeScope="True">
...
<Grid.ColumnDefinitions>
<ColumnDefinition Width="60"/>
<ColumnDefinition SharedSizeGroup="secondColumn" />
<ColumnDefinition Width="20"/>
</Grid.ColumnDefinitions>
...
</ListBox>
这将告诉WPF同步所有网格的第二列(从技术上讲,宽度为'自动',但所有网格的宽度都相同)。
另一种选择是使用ListView,并定义列。