나는 이제 막 포기합니다. 이 DataGridComboBoxColumn을 DataGrid의 DataContext (DataSet)에 바인딩하려고했지만 그럴 수 없습니다. 코드는 다음과 같습니다DataGrid DataContext에 대한 DataGridComboBoxColumn 바인딩
에서 UserControl C 번호 :
private static String strDBPath = EMS.Properties.Settings.Default.DBFile;
private static OleDbConnection myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strDBPath + ";Jet OLEDB:Engine Type=5");
private static string strProp = "SELECT * FROM tblProperties";
private static OleDbDataAdapter adapterProp = new OleDbDataAdapter(strProp, myConn);
private static DataSet dsProp = new DataSet();
public ObservableCollection<string> VarTypes { get; set; }
public UserControlPropertiesAccess() {
VarTypes = new ObservableCollection<string>() { "N", "Bool", "A2", "A4", "A8", "A20", "A50", "A100", "A200", };
InitializeComponent();
DatabaseHandling.CreateTable("tblProperties");
adapterProp.Fill(dsProp, "LoadDataBindingProp");
dgProperties.DataContext = dsProp;
}
dsProp에서 나는 다음과 같은 필드가 있습니다 PROPID, PROPNAME, PropVarType 및 PropUnit을. 내 DataGrid 다른 열의 마지막 세 필드를 표시하려면 바인딩을 사용하고 모든 작동합니다. DataGridComboBoxColumn을 사용하려고하면 DataContext에 바인딩되지 않습니다. ObservableCollection을 내 콤보 상자 항목으로 관리하기 만했습니다.
는 XAML :
private void btnSaveProperty_Click(object sender, RoutedEventArgs e)
{
myConn.Open();
adapterProp.Update(dsProp.Tables[0]);
myConn.Close();
}
는 그래서 모두가 원하는 내 DataSet에 내 DataGridComboBoxColumn을 결합이다 :
<DataGrid Name="dgProperties" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="LightCyan" Style="{StaticResource AzureDataGrid}" AutoGenerateColumns="False" CanUserAddRows="False" SelectionMode="Single" ItemsSource="{Binding Path=LoadDataBindingProp}" IsReadOnly="True" SelectionChanged="dgProperties_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=PropName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Header="Property" Width="150" />
<DataGridComboBoxColumn x:Name="dgcmbProperties" SelectedItemBinding="{Binding Path=PropName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Header="Variable" Width="80" />
<DataGridTextColumn Binding="{Binding Path=PropUnit, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Header="Unit" Width="100" />
</DataGrid.Columns>
</DataGrid>
사용자가 편집 완료 후, 나는 사용하여 내 데이터베이스에 데이터를 업로드 할 수 있습니다. 또한 선택한 항목이 DataGrid 셀에 표시되지 않습니다.
도움이 될 것입니다.