XAML - 通过文本块提供内容后,按钮内容消失(数据网格的最后一行除外)



我正在使用按钮内容作为<Setter Property="Content" Value="Accept">

在那之前一切都还好

但是,我必须为内容放置一个文本块,因为我希望在按钮内容中使用 CharacterEllipsis。

从那以后,按钮的内容消失了

奇怪的是,除了最后一行之外,它的所有行都消失了。所有行的按钮代码都相同。由于我正在使用

<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<--code for this column of every row-->
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

以下是代码片段和屏幕截图

<DataGrid.Columns>
<!--Item Desc column-->
<DataGridTemplateColumn  Width="1.5*" CanUserResize="False" CanUserSort="False" 
IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Margin="20 0 0 0">
<Label Style="{StaticResource supplyCabinetColumnHeaderStyle}">
<Label.Content>
<TextBlock Text="Description" TextTrimming="CharacterEllipsis"/>
</Label.Content>
</Label>
<TextBlock Text="{Binding ItemDescription}" Margin="5 6 0 0" Style="{StaticResource supplyCabinetReadOnlyDataStyle}" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--Button Column-->
<DataGridTemplateColumn Width="0.7*" CanUserResize="False" CanUserSort="False" IsReadOnly="True" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button  Height="25" FontSize="12" FontFamily="Arial" 
HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0 25 10 4" Padding="10 5 10 5">
<Button.Style>
<Style TargetType="Button">
<Setter Property="Content">
<Setter.Value>
<TextBlock Text="Accept" TextTrimming="CharacterEllipsis"/>
</Setter.Value>
</Setter>
<Setter Property="Background" Value="#DFE0E2" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border CornerRadius="4" Background="{TemplateBinding Background}" BorderThickness="0.5" BorderBrush="Gray">
<ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" 
                Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Button.Style>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>

按钮内容问题

<TextBlock Text="Accept" TextTrimming="CharacterEllipsis"/>包含在按钮的模板中,而不是ContentPresenter。Setter 对每个按钮仅使用一个 TextBlock 实例。但是 TextBlock 是 FrameworkElement,不能有多个父级(不能在多个地方显示(。如果将其移动到模板,则每个按钮都将获得自己的文本块实例。

<Button.Style>
<Style TargetType="Button">
<Setter Property="Content" Value="Accept">
<Setter Property="Background" Value="#DFE0E2" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border CornerRadius="4" Background="{TemplateBinding Background}" BorderThickness="0.5" BorderBrush="Gray">
<TextBlock Text="{TemplateBinding Content}"
TextTrimming="CharacterEllipsis" 
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Button.Style>

最新更新