2016-05-13 3 views
0

Я пробовал это некоторое время. Я просто застрял и не могу пройти через это.Silverlight: выровнять элементы управления вправо внутри ячейки Datagrid

В ячейке datagrid имеется три элемента управления.

1: Гиперссылка Кнопка 2: Четкая кнопка 3: Кнопка поиска

Что мне нужно сделать, чтобы выровнять «ясно» и «Кнопка открытия» выравнивания справа от колонны. Уловка - это размер столбца. Я попытался дать фиксированную ширину кнопке гиперссылки, она выглядит хорошо, но становится беспорядочной, когда размер столбца изменяется.

Содержимое ячейки имеет стиль ниже.

<Style TargetType="controls:HyperlinkClear"> 
     <Setter Property="Background" Value="Transparent"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="controls:HyperlinkClear"> 
        <Border BorderThickness="0" Margin="2" BorderBrush="Transparent"> 
         <Border.Resources> 
          <Style x:Name="buttonStyle" 
            TargetType="Button"> 
           <Setter Property="Template"> 
            <Setter.Value> 
             <ControlTemplate TargetType="Button"> 
              <Grid Width="12" 
                Height="12"> 
               <TextBlock Margin="{TemplateBinding Margin}" Text="x"></TextBlock> 
              </Grid> 
             </ControlTemplate> 
            </Setter.Value> 
           </Setter> 
          </Style> 
         </Border.Resources> 
         <controlsToolkit:DockPanel Background="Transparent"> 
          <Button Margin="-2,0,0,0" controlsToolkit:DockPanel.Dock="Right" HorizontalAlignment="Right" x:Name="MainSearchButton" Style="{StaticResource ButtonStyle}" IsTabStop="False" 
            Visibility ="{Binding IsRemoveButtonEnabled,Converter={StaticResource BoolToVisibilityConverter},Mode=TwoWay}"> 
           <Image Source="./open.png" Height="14" Width="16" VerticalAlignment="Center"/> 
          </Button> 
          <Button controlsToolkit:DockPanel.Dock="Right" Cursor="hand" 
            Margin="3,-2,0,0" Visibility ="{Binding IsRemoveButtonEnabled,Converter={StaticResource BoolToVisibilityConverter},Mode=TwoWay}" 
            x:Name="RemoveItemButton" HorizontalAlignment="Right" 
            Style="{StaticResource buttonStyle}" IsTabStop="false"/> 

          <HyperlinkButton x:Name="HyperlinkButton" Style="{StaticResource HyperlinkButtonStyle}" Content="{TemplateBinding Content}" /> 
         </controlsToolkit:DockPanel> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

В настоящее время это выглядит так. DataGrid column

Ожидаемое enter image description here

+0

Своп вы DockPanel для сетки с первой колонке '*' размера, и два, которые, как предполагается, будет справа установлен в 'Auto' и вы сделали. –

+0

Я попытался с помощью Grid и задал определения столбцов. Это то же поведение. Не видел различий. я что-то упускаю? – riteshmeher

ответ

0

Я нашел решение. Решение состоит в том, чтобы установить горизонтальное выравнивание содержимого ячейки на «Stretch».

Переопределить метод BindCellContent столбца.

public override void BindCellContent(FrameworkElement cellContent, DataGridRow row) 
{ 
var hyperlinkButton = (HyperlinkClear)cellContent; 
hyperlinkButton.HorizontalAlignment = HorizontalAlignment.Stretch; 
} 
Смежные вопросы