我有一个FlipView,用于展示人物雕塑。雕塑包含了他们图片的路径。
将这个属性绑定到普通的DataTemplate没有问题。(下面的代码可以正常工作)
但是当我使用我的用户控件时,它就不再起作用了:
FigurinePath DP 未设置。(使用硬编码的字符串没有问题。)下面是输出中的错误信息:
绑定表达式路径错误:“在'Com.Test.ViewModels.UserControl.FigurineStickerUserControlViewModel, Test.ViewModels, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'上未找到'Path'属性。BindingExpression: Path='Path' DataItem='Com.Test.ViewModels.UserControl.FigurineStickerUserControlViewModel, Test.ViewModels, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'; target element is 'Com.Test.Views.FigurineStickerUserControl' (Name='pageRoot'); target property is 'FigurinePath' (type 'Object')”。
看起来DataTemplate试图将Figurine分配为UserControl的DataContext,然后从我的UC的DataContext检索该属性。但是我的UC有自己的DataContext(即其ViewModel),我不想删除它。
不幸的是,在WinRT / UWP中,无法使用Binding进行FindAncestor技巧。我已经尝试过以下方法:(FlipFigurine为FlipView对象)
有没有办法访问实际的Figurine对象并将其Path属性绑定到我的UC的FigurinePath属性?
将这个属性绑定到普通的DataTemplate没有问题。(下面的代码可以正常工作)
</DataTemplate>
<Canvas x:Name="DefaultImageCanvas" Width="660" Height="372">
<Image Name="imageFlip" Width="660" Height="372" Source="{Binding Path}"
Stretch="Uniform" />
</Canvas>
</DataTemplate>
但是当我使用我的用户控件时,它就不再起作用了:
<DataTemplate>
<local:FigurineStickerUserControl Width="660" Height="372"
FigurinePath="{Binding Path}"/>
</DataTemplate>
FigurinePath DP 未设置。(使用硬编码的字符串没有问题。)下面是输出中的错误信息:
绑定表达式路径错误:“在'Com.Test.ViewModels.UserControl.FigurineStickerUserControlViewModel, Test.ViewModels, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'上未找到'Path'属性。BindingExpression: Path='Path' DataItem='Com.Test.ViewModels.UserControl.FigurineStickerUserControlViewModel, Test.ViewModels, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'; target element is 'Com.Test.Views.FigurineStickerUserControl' (Name='pageRoot'); target property is 'FigurinePath' (type 'Object')”。
看起来DataTemplate试图将Figurine分配为UserControl的DataContext,然后从我的UC的DataContext检索该属性。但是我的UC有自己的DataContext(即其ViewModel),我不想删除它。
不幸的是,在WinRT / UWP中,无法使用Binding进行FindAncestor技巧。我已经尝试过以下方法:(FlipFigurine为FlipView对象)
<local:FigurineStickerUserControl Width="660" Height="372"
FigurinePath="{Binding SelectedItem.Path, ElementName=FlipFigurine}"/>
它不起作用。即使将DP更改为对象并尝试以下操作也无效,DP的setter从未被调用。日志中没有错误。
FigurinePath="{Binding SelectedItem, ElementName=FlipFigurine}"
有没有办法访问实际的Figurine对象并将其Path属性绑定到我的UC的FigurinePath属性?