如何解决Xamarin 在 ControlTemplate 之外形成访问元素
我正在尝试找到一种方法来访问 ControlTemplate
外部的命名元素,反之亦然,从外部访问 ControlTemplate
中的命名元素,从 XAML(不是代码隐藏)。
<ResourceDictionary>
<ControlTemplate x:Key="MyControlTemplate">
<views:MyView x:Name="MyViewName">
<views:MyView.Triggers>
<DataTrigger targettype="views:MyView" Binding="{Binding MyProperty}" Value="True">
<Setter TargetName="MyCollectionView" Property="IsEnabled" Value="False"></Setter>
</DataTrigger>
</views:MyView.Triggers>
</views:MyView>
</ControlTemplate>
<ControlTemplate x:Key="MyOtherControlTemplate">
<views:MyOtherView x:Name="MyViewName"></views:MyView>
</ControlTemplate>
</ResourceDictionary>
<CollectionView x:Name="MyCollectionView">
...
</CollectionView>
<TemplatedView
Grid.Row="1"
ControlTemplate="{StaticResource MyControlTemplate}"/>
<TemplatedView
Grid.Row="1"
ControlTemplate="{StaticResource MyOtherControlTemplate}"/>
此代码位于 ContentView
内。它根据 CollectionView 中的选定项目显示一个视图 (MyView) 或另一个视图 (MyOtherView)。如果 MyProperty(视图 MyView 中的一个属性)为 True,则我希望禁用 collectionView。由于 MyView 是在 ControlTemplate 中声明的,因此我无法管理它以访问 MyCollectionView
其中 MyProperty
是 MyView
viewmodel 中的布尔值。
此代码抛出 ArgumentNullException: Value cannot be null. Parameter name: targetobject
。
显然,MyCollectionView
在 ControlTemplate
中是未知的
我还尝试在 MyView
的 DataTrigger
中引用 MyCollectionView
的名称,但没有结果。
有人可以帮我吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。