How to bind collection to WPF:DataGridComboBoxColumn

This is hands down the best solution:

http://wpfthoughts.blogspot.com/2015/04/cannot-find-governing-frameworkelement.html

The idea here is that you declare a CollectionViewSource as a static resource and then declaratively bind it to ItemsSource of the DataGridComboBoxColumn.

Create and bind a static CollectionViewSource:

 <Page.Resources>
     <CollectionViewSource x:Key="Owners" Source="{Binding Owners}"/>
 </Page.Resources>

And then bind your target ItemsSource:

ItemsSource="{Binding Source={StaticResource Owners}}"

The problem lies in that Columns does no inherit DataContext.

See more here Binding in a WPF data grid text column

here blogs.msdn.com/vinsibal/archive/2008/12/17/wpf-datagrid-dynamically-updating-datagridcomboboxcolumn.aspx

and here http://blogs.msdn.com/jaimer/archive/2008/11/22/forwarding-the-datagrid-s-datacontext-to-its-columns.aspx


If your measures are common for all objects, then you can make measures static

public String[] Measures { get; }

And your xaml will use it as it's shown below:

<DataGridComboBoxColumn
    Header="Role"
    SelectedValueBinding="{Binding Role}"
    ItemsSource="{Binding Source={x:Static local:ProjectsDataContext.Roles}}"
    DisplayMemberPath="Name"/>

Hopefully, it will help.

Tags:

C#

Wpf

Datagrid