C# 祖先模式下的数据模板绑定

C# 祖先模式下的数据模板绑定,c#,wpf,xaml,C#,Wpf,Xaml,假设我们有以下代码: MyGridViewColumn.xaml <GridViewColumn x:Class="some_namespace.MyGridViewColumn" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

假设我们有以下代码:

MyGridViewColumn.xaml

<GridViewColumn x:Class="some_namespace.MyGridViewColumn"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type GridViewColumn}}, Path=MyString, Mode=OneTime"/>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

这感觉不错,但不起作用。到“MyString”的正确绑定是什么?

x:Class只能为根元素指定。将GridViewColumn设置为根元素没有意义,甚至不确定这是否可行。你的代码编译吗?请参见“是”,代码可以编译,但“MyString”无法通过此绑定访问:“binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type GridViewColumn},Path=MyString,Mode=OneTime”。此外,“GridViewColumn”实际上是根元素,因此直到现在它还是正确的。例如,如果a将其设置为用户控件,它将工作,但是如果没有用户控件作为根元素,它似乎就不工作了……在这种情况下,我认为您可以通过将部分
Path=MyString
更改为
Path=DataContext.MyString
来攻击您的父母
namespace some_namespace
{
    public partial class MyGridViewColumn
    {
        public MyGridViewColumn()
        {
            MyString = "Hello!";
            InitializeComponent();
        }

        public string MyString { get; set; }
    }
}