Я определил пользовательское присоединенное свойство следующим образом:
public class DataFilter
{
public static readonly DependencyProperty FilterColumnProperty =
DependencyProperty.RegisterAttached("FilterColumn", typeof (string), typeof (DataFilter),
new FrameworkPropertyMetadata(string.Empty,
FrameworkPropertyMetadataOptions.Inherits));
public static void SetFilterColumn(UIElement element, string value)
{
element.SetValue(FilterColumnProperty, value);
}
public static string GetFilterColumn(UIElement element)
{
return (string) element.GetValue(FilterColumnProperty);
}
}
Я использую его в своем XAML следующим образом:
<Grid Height="600" Name="grdData" cmds:DataFilter.FilterColumn="datasource_id">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="25"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
</Grid.RowDefinitions>
<igDP:XamDataGrid Name="xamDataGrid1" VerticalAlignment="Top" DataSource="{Binding Tables[Table1]}" ActiveDataItem="{Binding SelectedItem, Mode=OneWayToSource}" cmds:DataFilter.FilterColumn="{Binding FilterCol, Mode=OneWayToSource">
Целью здесь является возможность связать унаследованное значение присоединенного свойства cmds: DataFilter.FilterColumn со свойством VM FilterCol. Я не уверен, как этого добиться. Приведенный выше код / XAML устанавливает значение по умолчанию для присоединенного свойства (strng.Empty) только для свойства VM, что связано с тем, что он создает новый экземпляр присоединенного свойства в дочернем элементе управления. Не уверен, какой синтаксис XAML использовать, чтобы привязать его к значению, заданному в элементе управления Grid (parent).