[英]codebehind binding of DataGridComboboxColumn in wpf datagrid
[英]DataGridComboBoxColumn binding to DataGrid DataContext
我要放棄了 我一直在嘗試將此DataGridComboBoxColumn綁定到DataGrid的DataContext(一個DataSet),但是我做不到。 代碼如下:
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:
<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>
用戶完成編輯后,我使用以下方法將數據上傳到數據庫中:
private void btnSaveProperty_Click(object sender, RoutedEventArgs e)
{
myConn.Open();
adapterProp.Update(dsProp.Tables[0]);
myConn.Close();
}
所以我只想將我的DataGridComboBoxColumn綁定到我的DataSet。 此外,所選項目未顯示在DataGrid單元中。
任何幫助將不勝感激。
您沒有為DataGridComboBoxColumn設置ItemsSource
我想您的主視圖模型(主窗口的DataContext)具有一個包含所有組合框項目(例如MyComboItems)的集合
然后這應該工作:
<Window x:Name="root">
<DataGrid ItemsSource="{Binding Path=LoadDataBindingProp}">
<DataGrid.Columns>
<DataGridComboBoxColumn x:Name="dgcmbProperties" Header="Variable"
ItemsSource="{Binding
ElementName=root,
Path=DataContext.MyComboItems}"
SelectedItemBinding="{Binding
Path=PropName,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid.Columns>
</DataGrid>
</Window>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.