2013-08-28 4 views
1

Вот эта идея: мне нужна кнопка expand/collapse в моем DataGridTemplateColumn, чтобы разрешить пользователю расширять ячейку для просмотра полного содержимого или свернуть ее, чтобы видеть только первую строку. Вот мой шаблон:Добавление кнопки expand/collapse в ячейку DataGrid

<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 «s триггера, которые просто набор TextBlock» s TextTrimming свойства WordEllipsis в свернутом состоянии и установить его в None в расширенном состоянии, но не могу понять, правильно способ сделать это. Я попытался добавить следующий код под моим контролем над Expand:

<local:ExpandCollapseButton.Triggers> 
    <Trigger Property="IsExpanded" Value="True"> 
     <Setter TargetName="MyTB" Property="TextTrimming" Value="None" /> 
    </Trigger> 
</local:ExpandCollapseButton.Triggers> 

, но это дает ошибку говоря , который я не в силах понять.

+0

Вы не можете поместить Триггеры в UI элемент, как это. Вы можете добавить «EventTriggers» в коллекцию триггеров элемента UI. используйте 'DataTemplate.Triggers' или что-то в этом роде. –

+0

@HighCore: Можете ли вы прокомментировать пример? – dotNET

ответ

3

Используйте DataTemplate триггеры с SourceName и имя_конечного_компьютера

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

Благодаря

+0

Спасибо тонну. Это работает как шарм. Вы даже можете установить несколько свойств цели, как я должен был установить как TextTrimming, так и 'TextWrapping'. Однако для этого необходимо определить свойство триггера ('IsExpanded' в моем случае) как свойство зависимостей, а не как простое свойство. – dotNET

Смежные вопросы