2013-08-01 3 views
1

WPF에서 데이터 격자를 보여주는 DataGrid가 있습니다. 데이터는 다음 속성을 포함하는 ViewModel에서 검색됩니다.WPF Datagrid with Databinding, ItemsSource 변경

Public ReadOnly Property Devices() As List(Of Device) 
    Get 
     Return FDevices 
    End Get 

.

Public ReadOnly Property ClientNetworks() As List(Of network) 
    Get 
     Return fnetwork 
    End Get 
End Property 

두 속성 모두 뷰 모델을 구성한 후에 데이터로 채워집니다. Datagrid에서 속성을 사용하려면 다음 XAML을 사용합니다.

<DataGrid ItemsSource="{Binding Devices}" AutoGenerateColumns="False" > 
     <DataGrid.Columns> 
      <DataGridTemplateColumn Header="Customer" > 
       <DataGridTemplateColumn.CellTemplate > 
        <DataTemplate> 
------------------ <TextBlock Text="{Binding ClientNetwork.Description}"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
       <DataGridTemplateColumn.CellEditingTemplate> 
        <DataTemplate> 
------------------> <ComboBox ItemsSource="{Binding ClientNetwork}" DisplayMemberPath="Description"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellEditingTemplate> 
      </DataGridTemplateColumn> 
</DataGrid> 

설명을 포함하는 텍스트 상자와 편집시 문자열이있는 콤보 상자가 표시되어야합니다.

Datagrid 외부에서 콤보 상자가 정상적으로 작동합니다. 나는 이것이 Datagrid의 ItemsSource를 설정했기 때문에 가능하다는 것을 알고 있지만 어떻게 작동하는지 찾을 수는 없습니다. 나는 combobox 코드의 몇 가지 변경을 시도했지만 아무도 지금까지 일한 적이 없다.

목표는 사용자가 셀을 편집하고 문자열을 선택할 수있는 combobox를 표시 할 수있게하는 것입니다. 그런 다음 해당 int가 데이터베이스에 저장됩니다.

UPDATE 1

<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},Path=DataContext.ClientNetworks}" 
            DisplayMemberPath="Description" 
            SelectedItem="{Binding ClientNetwork}" 
            /> 

이 내가 그것을 끝낼 수있는 방법을 발견 한 데이터 컨텍스트

답변

0

의 휴식을 고정하는 방법이다하지만 난이 그것을

을 수행해야하는 방법입니다 확실하지 않다
<Window.Resources> 
    <CollectionViewSource Source="{Binding ClientNetworks}" x:Key="clientnetworks" /> 
</Window.Resources> 

및 콤보 상자에서

<ComboBox ItemsSource="{Binding Source={StaticResource clientnetworks}}" DisplayMemberPath="Description" /> 
+0

몇 번의 클릭 후 예상대로 모든 레코드가 함께 변경되기 시작합니다. 한 행을 편집하는 동안 다른 레코드도 함께 변경됩니다. – retanik