我试图将整个对象使用它的x:Name绑定到另一个对象的属性。例如
Struct
我如何实现这一目标?
更新:我试图在没有运气的情况下实施这些建议。我正在谈论的xaml如下:
<local:customImage Tag="{Binding x:Name}"/>
也许我应该尝试将starBehaviour移动到c#,因为它不是视觉元素?
P.S我所要做的就是将starTag设置为一个对象,所以如果我能做到这一点而没有绑定,我不介意是否有解决方案。
答案 0 :(得分:0)
您的视图必须具有包含(公共)属性“名称”
的对象的绑定上下文<local:customImage Tag="{Binding Name}"/>
编辑:尝试像这样声明你的属性,它接近你所做的,它只是更多类型安全(使用nameof(...)运算符)并且可能包含一些你没有正确写入的警告。
public static readonly BindableProperty starTagProperty = BindableProperty.Create(propertyName: nameof(starTag),
returnType: typeof(StarBehaviour),
defaultValue: null,
declaringType: typeof(TheClassYouDeclareThisIn),
defaultBindingMode: BindingMode.TwoWay,
propertyChanged: OnStarTagChanged);
public StarBehaviour starTag
{
get { return (StarBehaviour)GetValue(starTagProperty); }
set { SetValue(starTagProperty, value); }
}
private static void OnStarTagChanged(BindableObject bindable, object oldValue, object newValue)
{
if (bindable is TheClassYouDeclareThisIn starTagDeclarer && newValue is StarBehaviour newStarTag)
{
//Does this get called if u change up the starTag property? test it
}
}
答案 1 :(得分:0)
要绑定对象,只需添加对象的名称即可。 您的财产必须是公共的,即
public ObjectType Name {get;set;}
<local:customImage Tag="{Binding Name}"/>
或者如果你想绑定你当前的绑定上下文,你可以像这样使用它
<local:customImage Tag="{Binding .}"/>
你的财产“标签”也必须是一个可绑定的财产。
答案 2 :(得分:0)
x:Name引用正在使用的组件的名称。 绑定与组件的名称无关,应该是这样的
例如:
<local: customImage x: Name = "NameOfComponent" Tag = "{Binding Name}" />