3

是否可以为x:Reference代码中的绑定设置标记扩展?

例如:

{Binding SelectedItem, Source={x:Reference ComboList}}

所以我创建了一个这样的绑定:

Binding b = new Binding("SelectedItem");
b.Source = //What to put here??

我以前使用过,但我在这个问题ElementName中提到的 NameScope 有一些问题,因为这个绑定是在我创建的 UserControl 内部的 ComboBox 中设置的,显然如果我使用namescope 仅限于该 UserControl 而不是外部..ElementName

谢谢!

4

1 回答 1

3

将我的评论转换为答案:

{x:Reference} 是一个 XAML 构造,它在 C# 代码中不可用

如果您需要内部的某些东西从外部获得属性,则必须在内部UserControl创建该属性作为 a ,然后通过以下方式将您的元素绑定到该属性:DependencyPropertyUserControlRelativeSource

在后面的 UserControl 代码中:

 public static readonly DependencyProperty SomeProperty = DependencyProperty.Register("Some", typeof (SomeValue), typeof (YourUserControl), new PropertyMetadata(default(SomeValue)));

        public SomeValue Some
        {
            get { return (SomeValue) GetValue(SomeProperty); }
            set { SetValue(SomeProperty, value); }
        }

UserControl 可视化树中的某处:

<TextBox Text="{Binding Some, RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}"/>
于 2013-03-20T17:17:57.097 回答