<Picker>
<Picker.ItemsSource>
<c:List x:TypeArguments="x:String">
<x:String>apple</x:String>
<x:String>orange</x:String>
</c:List>
</Picker.ItemsSource>
<Picker.SelectedItem>
<Binding>
<Binding.Converter>
<local:SampleConverter SampleBindable="{Binding ItemsSource, Source={RelativeSource FindAncestor, AncestorType={x:Type Picker}}}" />
</Binding.Converter>
</Binding>
</Picker.SelectedItem>
</Picker>
我的理解是,我可以通过在FindAncestor的AncestorType中指定"Picker"来获得Picker控件,但实际情况似乎并非如此,有人能解释一下为什么吗?
如果我给Picker一个名称,并将RelativeSource更改为x:Reference,如下所示,我可以成功地获得它("SampleBindable"属性反映了Picker的ItemsSource的内容)。
x一个一个一个一个x一个一个二个x
但是,每次只为这些绑定命名控件似乎有点多余......有人知道一种避免命名Picker控件的方法吗?
1条答案
按热度按时间ckx4rj1h1#
Source
通常用于静态寻址位于其他位置的源。如果您想爬上树以查找相对父级,可以改用RelativeSource
。尝试以下操作: