I want to bind the SelectedItems
of the DataGrid
to my view model. I am using this attached property and code in my XAML.
Attached property:
public class DataGridSelectedItemsAttachedPropertyV2
{
#region SelectedItems
///
/// SelectedItems Attached Dependency Property
///
public static readonly DependencyProperty SelectedItemsProperty =
DependencyProperty.RegisterAttached("SelectedItems", typeof(IList),
typeof(DataGridSelectedItemsAttachedPropertyV2),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
new PropertyChangedCallback(OnSelectedItemsChanged)));
public static IList GetSelectedItems(DependencyObject d)
{
return (IList)d.GetValue(SelectedItemsProperty);
}
public static void SetSelectedItems(DependencyObject d, IList value)
{
d.SetValue(SelectedItemsProperty, value);
}
private static void OnSelectedItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
DataGrid miDg = d as DataGrid;
IList ModelSelectedItems = GetSelectedItems(miDg);
if (miDg.SelectedItems != null)
{
foreach (var item in miDg.SelectedItems)
ModelSelectedItems.Add(item);
}
SetSelectedItems(miDg, ModelSelectedItems);
}
#endregion
}
XAML:
<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Stretch" Margin="5,5,0,12" Name="dgdGeneros" VerticalAlignment="Stretch" Grid.Row="1"
Behaviors:DataGridSelectedItemsAttachedPropertyV2.SelectedItems="{Binding DgdOrigenesSelectedItems}">
The code get a this point:
public static readonly DependencyProperty SelectedItemsProperty =
DependencyProperty.RegisterAttached("SelectedItems", typeof(IList),
typeof(DataGridSelectedItemsAttachedPropertyV2),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
new PropertyChangedCallback(OnSelectedItemsChanged)));
But it never enters in the OnSelectedItemsChanged()
method when I select an item in my DataGrid
, but I am not able to see the problem.
Thanks.