我已经定义了一个自定义附加属性,如下所示:
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的继承附加属性值绑定到FilterCol的VM属性。我不确定如何实现这一目标。上面的代码/ XAML仅将附加属性(strng.Empty)的默认值设置为VM属性,这是因为它正在子控件中创建附加属性的新实例。我不确定使用什么XAML语法来将其绑定到Grid(父)控件中设置的值。
答案 0 :(得分:0)
我会尝试在一段时间之后发布我的一些代码(现在没有时间)但是再次查看代码我认为你的问题在这里:
在这一行中,您将DataContext设置为“{Binding Tables [Table1]}”,我认为这是您的Binding尝试查找FilterCol的地方,而不是那里。尝试设置{Binding FilterCol,RelativeSource = {RelativeSource AncestorType = {x:Type Grid}}} 希望这有帮助
答案 1 :(得分:-1)
我有完全相同的问题。我的问题是DataContext没有设置到VM而是设置到另一个对象,所以我只需要找到解决方法,现在一切正常。