我将按钮内容用作<Setter Property="Content" Value="Accept">
直到那时一切都还好
但是,我必须为该内容放置一个TextBlock,因为我希望在按钮内容中包含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。设置器对每个按钮仅使用一个TextBlock实例。但是TextBlock是FrameworkElement,并且不能具有多个Parent(不能在多个位置显示)。如果将其移至模板,则每个Button将获得其自己的TextBlock实例。
<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>