示例:
<DataTemplate x:DataType="FooEntity">
<Grid Background="{x:Bind MyClass.MyStaticBindingMethod(???)}" />
</DataTemplate>
传递实体的属性很容易,但我看不到传递实例本身的方法。此功能不受支持吗?我可以在this
中使用名为FooEntity
的属性(例如)存储对Instance
的引用,然后转到MyClass.MyStaticBindingMethod(Instance)
,但只是想确保没有一种更清洁的方式。
相关文档:https://docs.microsoft.com/en-us/windows/uwp/xaml-platform/x-bind-markup-extension
答案 0 :(得分:2)
您无法将实例本身传递到DataTemplate
。
DataTemplate
仅负责描述数据对象的可视结构,因此它不是保留对任何CLR对象的显式引用的工作的一部分。
DataTemplate
被定义为扩展数据对象的可视化结构,例如GridView
/ ListView
,以及那些已经处理引用集合的可能性,通过设置{{1}依赖属性。利用这一点,ItemsSource
只会暴露您的视觉结构的自定义。但是,此视觉结构应遵循必要的绑定,以实现所需的自定义行为。
如果您正在处理DataTemplate
,则必须将x:Bind
设置为您设置为Control ItemsSource的Collection的类型,因为编译器在编译时需要该信息时间。
这对于x:DataType
来说不是问题,因为这些是在运行时通过反射来评估的。
答案 1 :(得分:0)
我不确定我是否理解正确,但要绑定sub partial_match {
my ($string_1, $string_2) = @_;
return 0 if length($string_1) != length($string_2);
# bitwise exclusive or the two strings together; where there is
# a 0 in one string and a 1 in the other, the result will be "\1".
# count \1's to get the number of mismatches
my $mismatches = ( $string_1 ^ $string_2 ) =~ y/\1//;
return $mismatches == 0;
}
,直接表示实体,您可以使用空绑定:
this
或
Background="{x:Bind}"
但这意味着Background="{Binding}"
应来自FooEntity
,以便与Brush
类型兼容。