2016-05-13 7 views
0

私はこれをしばらく試しています。私はちょうど立ち往生し、それを通過することはできません。Silverlight:Datagridセル内のボタンコントロールを右揃え

DataGridセルには3つのコントロールがあります。

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> 

現在、このようになっています。 enter image description here

+0

「*」サイズの最初の列を持つDockPanelをスワップし、右側にあると思われる2つを「自動」に設定すると完了です。 –

+0

私はGridを試して、列の定義を設定しました。その同じ行動。違いは見られませんでした。私は何かが欠けていますか? – riteshmeher

答えて

0

期待 DataGrid column

私は解決策を見つけました。解決方法は、セルコンテンツの水平方向の配置を「ストレッチ」に設定することです。

列のBindCellContentメソッドをオーバーライドします。

public override void BindCellContent(FrameworkElement cellContent, DataGridRow row) 
{ 
var hyperlinkButton = (HyperlinkClear)cellContent; 
hyperlinkButton.HorizontalAlignment = HorizontalAlignment.Stretch; 
}