2011-07-20 31 views
7

Tôi có một chuỗi hiển thị DataGrid của các đối tượng. Các đối tượng đó có thuộc tính IsDetailsExpanded và tôi muốn liên kết thuộc tính DataRows DetailsVisibility với thuộc tính đó.WPF DataGrid RowDetails Hiển thị liên kết với một thuộc tính (chỉ với XAML)

tiếp cận đầu tiên tôi làm việc nhưng đòi hỏi một số mã-đằng sau (mà tôi muốn thoát khỏi)

tôi xử lý các sự kiện 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); 
} 

tôi nghĩ rằng đó có phải là một cách để đạt được một cái gì đó tương tự trong XAML nhưng tôi tiếc là tôi không có đầu mối nhỏ. Ý tưởng nào? đề xuất?

Trả lời

14

Bạn có thể sử dụng một Style cho các loại DataGridRow, như vậy:

<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

Chính xác. Đó là cách xaml. Chỉ Thuộc tính phải bằng với DetailsVisibility. –

+0

@ Yiğit - Cảm ơn bạn đã chỉ ra lỗi sao chép và dán của mình :-) – CodeNaked

+0

Đôi khi tôi muốn lạm dụng tính năng nhận xét này và thả một số biểu tượng mặt cười ngẫu nhiên xung quanh. Là nó cau mày khi: :))))) –

Các vấn đề liên quan