Видимость WPF Datagrid RowDetailsTemplate связывается со свойством

Мне ArgumentException (или ребенок) имеет больше смысла, потому что аргумент (значение), которое Вы обеспечили, не допустим, и это - то, для чего был создан ArgumentException.

11
задан WillH 24 September 2009 в 13:00
поделиться

1 ответ

Глядя на исходный код инструментария WPF, каждый DataGridRow имеет свойство DetailsVisibility.

Я помещаю кнопку (только для тестирования) в первый столбец.

<toolkit:DataGridTemplateColumn>
    <toolkit:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button x:Name="buttonDetails" Content="Hello" ButtonBase.Click="Details_Click" />
        </DataTemplate>
    </toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>

При нажатии кнопки найдите строку и переключите свойство.

   private void Details_Click(object sender, RoutedEventArgs e)
    {
      try
      {
        // the original source is what was clicked.  For example 
        // a button.
        DependencyObject dep = (DependencyObject)e.OriginalSource;

        // iteratively traverse the visual tree upwards looking for
        // the clicked row.
        while ((dep != null) && !(dep is DataGridRow))
        {
          dep = VisualTreeHelper.GetParent(dep);
        }

        // if we found the clicked row
        if (dep != null && dep is DataGridRow)
        {
          // get the row
          DataGridRow row = (DataGridRow)dep;

          // change the details visibility
          if (row.DetailsVisibility == Visibility.Collapsed)
          {
            row.DetailsVisibility = Visibility.Visible;
          }
          else
          {
            row.DetailsVisibility = Visibility.Collapsed;
          }
        }
      }
      catch (System.Exception)
      {
      }
    }

Я не исследовал, как делать это с помощью привязки данных.

14
ответ дан 3 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: