저는 솔루션을 온라인으로 검색 할 때 많은 모습을 드러내지 않고이 사용자 정의 동작을 데이터 격자로 가져 오는 방법을 알아 내려고 노력했습니다.DataGridRow를 선택한 경우 데이터에서 사용자 지정 작업을 수행하려면 어떻게해야합니까?
다음 데이터 그리드 (간결 제거 일부 XAML)을 감안할 때 :
<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Width="auto">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
내가 확인란이 성공적으로 각 행의 데이터 바인딩 된 개체에 바인딩해야합니다. (참고 : DataGridCheckBoxColumn
대신 DataGridTemplateColumn
을 사용하므로 두 번 클릭하여 값을 변경할 필요가 없습니다.)
달성하고자하는 것은 사용자가 행을 선택할 때 데이터 바인딩 된 객체의 선택 속성을 업데이트하거나 확인란을 선택하는 기능입니다. 효과적으로 전체 행을 클릭하면 체크 상자의 체크 된 속성을 설정합니다. 이상적으로, 가능하다면 코드 숨김없이 코드를 유지하고 싶습니다. 최대한 코드를 깨끗하게 유지하려고합니다.
가능하면 행을 클릭하면 선택한 속성이 전환되므로 다른 속성을 클릭하면 이전 속성이 선택되고 새 속성이 선택됩니다.
도움을 주시면 감사하겠습니다.
현재 IsChecked가 Selected로 바인딩되어있어 바인딩 오류가 발생합니까?난 당신이 이런 식으로 할 수있을 것 같아요 (미안 IDE 근처에 테스트하지)하지만 당신은 어쩌면 RelativeSource 검색과 올바른 선택 속성에 바인딩되어 있는지 확인해야 할 수도 있습니다? – Dutts
선택한 것은 datagridrow가 아닌 datacontext 항목의 속성 (아마도 가장 좋은 이름이 아님)이므로 의도 한대로 잘 작동합니다. 나는'datagridrow'를 isselected에 추가로 바인딩하려하지만이 바인딩 예제를 찾지 못했습니다. –
아아, DataGrid에서 SelectedItem을 대신 살펴야 할 수도 있습니다. – Dutts