如何将继承的附加属性值绑定到我的VM?

3
我已定义了一个自定义的附加属性,如下所示:

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语法来使其绑定到网格(父)控件中设置的值。
2个回答

0

我会尝试稍后发布我的一些代码(现在没时间),但是再次查看您的代码后,我认为您的问题出在这里:

在这一行中,您将DataContext设置为“{Binding Tables [Table1]}”,我认为那是您的绑定尝试查找FilterCol并且没有找到的地方。尝试设置{Binding FilterCol,RelativeSource = {RelativeSource AncestorType = {x:Type Grid}}} 希望这可以帮助到您


-1

我曾经遇到过完全相同的问题。我的问题是DataContext没有设置为VM,而是设置为另一个对象,所以我只需要找到一个解决方法,现在一切都正常了。


很高兴知道你能让它工作。你能详细介绍一下你的解决方案吗?可以提供一些代码/XAML吗? - Neerav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接