Silverlight:将按钮控件对齐到Datagrid单元格内部(Silverlight: Align button controls to right inside Datagrid cell)

编程入门 行业动态 更新时间:2024-10-27 19:22:52
Silverlight:将按钮控件对齐到Datagrid单元格内部(Silverlight: Align button controls to right inside Datagrid cell)

我已经尝试了一段时间了。 我只是陷入困境,无法通过它。

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>

目前它看起来像这样。

预期

I have been trying this for a while. I am just stuck and can't get through it.

There are three controls in the datagrid cell.

1: A hyperlink Button 2: A clear button 3: A search button

What i need to do is to align the "clear" and "open button" align to the right of the column. The catch is the column is resizable. I tried to give a fixed width to the hyperlink button it looks good but it gets messy when the column is resized.

The cell content has below style.

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

Currently it looks like this.

Expected

最满意答案

我找到了解决方案。 解决方案是将cellcontent的水平对齐设置为“Stretch”。

覆盖列的BindCellContent方法。

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

I found the solution. The solution is to set the cellcontent's horizontal alignment to "Stretch".

Override the BindCellContent Method of the column.

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

更多推荐

本文发布于:2023-07-25 22:32:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1267145.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:控件   单元格   按钮   Datagrid   Silverlight

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!