문제

때로는 가장 쉬운 예가 찾기가 가장 어렵습니다. . .

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 클래스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top