힐로들 ..바인딩 사전
내 생각은 데이터를 표시 할 콜 럼 중 하나를 먼저 그리드에서 데이터를로드하는 매퍼 템플릿으로 사용하여 DataGrid을 "표 A"를 가정 해 봅시다, whis입니다 "표 B"
을 가정 해 봅시다에서 나는이 같은 "표 B"가 :
fieldtype_id | fieldtype_name
1 int
2 varchar
3 date
내가 DataGridComboBoxColumn를 사용하여 WPF DataGrid에이 테이블을 표시합니다.
은 그래서, 아래 XAML
<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Left" Margin="12,123,0,176" Name="dataGrid1" Width="1000"
ItemsSource="{Binding}" SelectionUnit="CellOrRowHeader" CanUserAddRows="False"
CellEditEnding="dataGrid1_CellEditEnding" CurrentCellChanged="dataGrid1_CurrentCellChanged">
<DataGrid.Columns>
<DataGridComboBoxColumn
Header="Field Type" Width="200"
DisplayMemberPath="Value"
SelectedValueBinding="{Binding fieldtypeSS, Mode=TwoWay}"
SelectedValuePath="{Binding fieldtype_id}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="IsSynchronizedWithCurrentItem" Value="False" />
<Setter Property="ItemsSource" Value="{Binding Path=fieldtype_id}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=fieldtype_id}" />
<Setter Property="IsDropDownOpen" Value="True" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
, 그것은 내부 WPF 창 데이터 격자를 생성하고, I는 클래스 생성 : 다음
public class cMapHeader
{
public int fieldtypeSS { get; set; }
public Dictionary<string, string> fieldtype_id { get; set; }
}
을 방법을 사용하여 테이블을 채우는 내가
//## Get MysqlFieldType
//## dboperation.dtQueries is my method to populate data, and return as DataTable
Dictionary<string, string> mysqlFieldType = new Dictionary<string, string>();
foreach (DataRow row in dboperation.dtQueries("SELECT fieldtype_id, fieldtype_name FROM mysql_Fieldtype ").Rows)
{
mysqlFieldType.Add(row["fieldtype_id"].ToString(), row["fieldtype_name"] as string);
}
다음 이전에 만든 것으로, 격자 채우기
gridMapHeader = new ObservableCollection<cMapHeader>()
{
new cMapHeader(){fieldtypeSS="1",fieldtype_id=mysqlFieldType},
new cMapHeader(){fieldtypeSS="2",fieldtype_id=mysqlFieldType}
};
dataGrid1.BeginInit();
dataGrid1.SetBinding(ItemsControl.ItemsSourceProperty, new Binding
{
Source = gridMapHeader
});
fieldtypeSS를 포함해야하는 셀은 표시되지 않지만 편집 모드에서는 DataGridComboBoxColumn이 값을 올바르게 표시합니다 ("표 B"의 fieldtype_name 만 표시).
셀이 초점을 잃었을 때 다음 두 번째 문제는, DataGridComboBoxColumn에서 선택 된 값이 손실됩니다 ..
이이 사람이 나를 도울 수 ?
정말 어떤 도움 주셔서 감사합니다 : D를
들으 B4에