We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

How to load the collection in GridComboBoxColumn when defining DataContext after loading Window in WPF DataGrid (SfDataGrid)?

Platform: WPF |
Control: SfDataGrid |
Published Date: April 20, 2016 |
Last Revised Date: March 29, 2021

The GridComboBoxColumn will loads the collection when defining DataContext before loading the WPF DataGrid (SfDataGrid). When you are defining the DataContext in Window.Loaded event, the binding will not be updated for GridComboBoxColumn which loads the empty collection. But you can achieve this by using Freezable class like below code example.
C#

this.Loaded += MainWindow_Loaded;
 
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    this.DataContext = new ViewModel();
}
 
public class BindingProxy : Freezable
{
    protected override Freezable CreateInstanceCore()
    {
        return new BindingProxy();
    }
 
    //Dependency property Data for holding ComboBox ItemsSource value.
    public object Data
    {
        get { return (object)GetValue(DataProperty); }
        set { SetValue(DataProperty, value); }
    }
        public static readonly DependencyProperty DataProperty =
    DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null));
}

XAML

<Window.Resources>
        <local:BindingProxy x:Key="proxy" Data="{Binding}" />    
</Window.Resources>
 
<syncfusion:SfDataGrid x:Name="DataGrid"
                               AutoGenerateColumns="False"
                               ItemsSource="{Binding Orderlist}"
                               NavigationMode="Cell">
        <syncfusion:SfDataGrid.Columns>
                <syncfusion:GridTextColumn MappingName="Name" />
                <syncfusion:GridTextColumn MappingName="City" />
                <syncfusion:GridTextColumn MappingName="Country" />
                <syncfusion:GridComboBoxColumn AllowEditing="True"
                                               DisplayBinding="{Binding Path=SelectedName}"
                                               DisplayMemberPath="Name"
                                               HeaderText="ComboBox-Column"
                                               ItemsSource="{Binding Data.StringName,
                                                                     Source={StaticResource proxy}}" />
        </syncfusion:SfDataGrid.Columns>
</syncfusion:SfDataGrid>

View sample in GitHub.

 

 

2X faster development

The ultimate WPF UI toolkit to boost your development speed.
ADD COMMENT
You must log in to leave a comment

Please sign in to access our KB

This page will automatically be redirected to the sign-in page in 10 seconds.

Up arrow icon

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

Live Chat Icon For mobile