以下是我的想法:我需要在DataGridTemplateColumn
中使用展开/折叠按钮,以允许用户展开单元格以查看完整内容,或将其折叠为仅查看第一行。这是我的模板:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<local:ExpandCollapseButton />
<TextBlock x:Name="MyTB" Text="{Binding Body}" Grid.Column="1" TextTrimming="WordEllipsis" />
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
ExpandCollapseButton
是一个简单的UserControl
,可在点击时在+和 - 图标之间切换。它有一个名为bool
的读/写IsExpanded
属性。
我现在正在尝试添加一个简单的Trigger
到ExpandCollapseButton
的触发器,只需将TextBlock
的{{1}}属性设置为TextTrimming
处于折叠状态并在展开状态下将其设置为WordEllipsis
,但无法找到正确的方法。我尝试在上面的扩展控件下添加以下代码:
None
但这会导致错误<local:ExpandCollapseButton.Triggers>
<Trigger Property="IsExpanded" Value="True">
<Setter TargetName="MyTB" Property="TextTrimming" Value="None" />
</Trigger>
</local:ExpandCollapseButton.Triggers>
,我无法理解。
答案 0 :(得分:3)
使用带有SourceName和TargetName的DataTemplate触发器:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<local:ExpandCollapseButton x:Name="MyButton"/>
<TextBlock x:Name="MyTB" Text="{Binding Body}" Grid.Column="1" TextTrimming="WordEllipsis" />
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsExpanded" Value="True" SourceName="MyButton">
<Setter Property="TextBlock.TextTrimming" Value="None" TargetName="MyTB"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
由于