2012-03-18 3 views
2

Попытки этого учебника http://www.wpftutorial.net/ListBoxDataTemplate.htmlКак правый край RadioButton в WPF

и мысли о добавлении радиокнопки следующего

<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> 

но полученный выход

enter image description here

Любые помочь в выравнивании переключателя справа от края списка? спасибо

ответ

3

Вам необходимо выровнять ширину сеток в пределах вашего DataTemplate. Вы можете сделать это с помощью SharedSizeGroup см этот вопрос подробно:

How can I make a column in a listbox in WPF the same width for all items?

+0

Это не решит проблему, будут выведены в действие RadioButtons, но они все равно не будут справа. –

+0

@ColinE, RadioButtons выстраиваются в линию, но они еще не справа – user1102610

0

Добавление большего количества деталей в @ColinE ответ ...

Использование SharedSizeGroup.

<ListBox ... Grid.IsSharedSizeScope="True"> 
    ... 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="60"/> 
     <ColumnDefinition SharedSizeGroup="secondColumn" /> 
     <ColumnDefinition Width="20"/> 
    </Grid.ColumnDefinitions> 

    ... 
</ListBox> 

Это будет сказать WPF, чтобы синхронизировать второй столбец всех сетках (технически, ширина «Auto», но это будет такой же ширины для всех сетках).

Другим вариантом является использование ListView и определение столбцов.

+0

Не проблема здесь, во втором столбце должно быть указано все оставшееся пространство, которое сделало бы RadioButton автоматом. Проблема в том, что сама сетка не занимает все пространство. –

Смежные вопросы