2011-07-20 15 views
7

Mam DataGrid wyświetlanie pęczek obiektów. Te obiekty mają właściwość IsDetailsExpanded i chcę powiązać właściwość DataRows DetailsVisibility z tą właściwością.WPF DataGrid RowDetails Widoczność powiązania z właściwością (tylko z XAML)

Moje pierwsze podejście działa, ale wymaga trochę kodu z opóźnieniem (co chciałbym się pozbyć)

obsłużyć zdarzenie LoadingRow

void LoadingRowHandler(object sender, DataGridRowEventArgs e) 
{ 
    Binding b = new Binding() 
    { 
     Source = e.Row.DataContext, 
     Path = new PropertyPath("IsExpanded"), 
     Converter = (IValueConverter)Resources["BoolToVisi"], 
     Mode = BindingMode.TwoWay 
    }; 
    e.Row.SetBinding(DataGridRow.DetailsVisibilityProperty, b); 
} 

myślę, że musi być jakiś sposób, aby osiągnąć coś podobnego w XAML, ale niestety nie mam najmniejszego pojęcia. Jakieś pomysły? propozycje?

Odpowiedz

14

Można użyć Style dla typu DataGridRow, tak:

<DataGrid Name="dataGrid1" Margin="12,12,0,0"> 
    <DataGrid.RowStyle> 
     <Style TargetType="DataGridRow"> 
      <Setter Property="DetailsVisibility" Value="{Binding IsExpanded, Converter={StaticResource BoolToVisi}}" /> 
     </Style> 
    </DataGrid.RowStyle> 
</DataGrid> 
+0

Dokładnie. To jest sposób xaml. Tylko właściwość powinna być równa DetailsVisibility. –

+0

@ Yiğit - Dzięki za wskazanie mojego błędu kopiowania i wklejania :-) – CodeNaked

+0

Czasami chcę nadużywać tej funkcji komentowania i upuścić kilka losowych emotikonów. Czy to jest mile widziana: :))))) –

Powiązane problemy