WPF- DataGridComboBoxColumn의 예제
-
19-09-2019 - |
문제
때로는 가장 쉬운 예가 찾기가 가장 어렵습니다. . .
2 개의 열이있는 Datagrid가 있습니다. 한 열에는 역할 정보가 포함되어 있고 다른 열에는 사용 가능한 사용자 목록이있는 콤보 상자가 있어야합니다. Combobox의 데이터는 첫 번째 열의 데이터와 관련이 없습니다. 나는 Combobox에 Datacontext가없고 ItemSource 만 가지고 있으며 바인딩도 사용할 수 없다는 사실에 의해 버려졌습니다.
누군가 테이블과 콤보 상자의 데이터에 두 개의 다른 데이터 세트를 사용하는 간단한 예제를 알려줄 수 있습니까?
해결책
Datagrid의 열에는 시각적 트리에 추가되지 않기 때문에 DataContext가 없습니다. 조금 더 이상하게 들리지만 살펴 봅니다 VINCES 블로그, 그것은 시각적 레이아웃의 좋은 예를 얻었습니다. 그리드가 그려지면 셀에 데이터 컨텍스트가 있고 정상 바인딩 (정적 자원이 아님)을 사용하여 콤보 박스 항목 소스를 설정할 수 있습니다.)
콤보 박스 항목 소스에 액세스 할 수 있습니다.
<dg:DataGridComboBoxColumn>
<dg:DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" />
</Style>
</dg:DataGridComboBoxColumn.EditingElementStyle>
</dg:DataGridComboBoxColumn>
다른 팁
DataGridTextColumns를 사용하는 대신 DataGridComboBoxColumn을 대신 사용합니다. 그런 다음 itemssource를 사용하여 데이터를 채우는데, 아래 예제에서는 정적 자원의 외부 열거를 가리키고 마지막으로 선택한 선택 객체에 바인딩하여 선택한 시합 바인딩에서 사용자 선택을 유지합니다.
<DataGrid.Columns>
<DataGridComboBoxColumn Header="MySelections"
SelectedItemBinding="{Binding MySelectionsProperty}"
ItemsSource="{Binding Source={StaticResource mySelectionsEnum}}" />
</DataGrid.Columns>
MSDN AT의 전체 예제를 참조하십시오 DatagridComboBoxColumn 클래스