这是一个用来说明问题的简单例子。我想让背景颜色取决于输入。
<Entry
BackgroundColor="{Binding Source={RelativeSource Self}, Path=Text}" />
// or
<Entry
BindingContext="{Binding Source={RelativeSource Self}}"
BackgroundColor="{Binding Text}" />
两者都具有以下输出。
然而,如果我按如下方式简化它,它就不再起作用。
<Entry
BindingContext="{RelativeSource Self}"
BackgroundColor="{Binding Text}" />
为了进行比较,我们可以简化
ItemsSource="{Binding Source={StaticResource people}}"
到
ItemsSource="{StaticResource people}"
问题
罪魁祸首是谁?
标记扩展
RelativeSource
提供了一个RelativeBindingSource
实例,它不是您可以从中获取信息的实际对象(但是,它可以用作扩展的源Binding
)。在前两个例子中,的绑定上下文
Entry
与返回的实际对象绑定{Binding}
。相比之下
ItemsSource
,它需要源而不是实际对象。