在DataTemplates中存在的静态方法绑定中,是否可以传入实体的实例?

时间:2018-01-22 23:36:32

标签: xaml uwp

示例:

<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

2 个答案:

答案 0 :(得分:2)

您无法将实例本身传递到DataTemplateDataTemplate仅负责描述数据对象的可视结构,因此它不是保留对任何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类型兼容。