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

enter image description here

其中 MyPropertyMyView viewmodel 中的布尔值。

代码抛出 ArgumentNullException: Value cannot be null. Parameter name: targetobject

显然,MyCollectionViewControlTemplate 中是未知的

我还尝试在 MyViewDataTrigger 中引用 MyCollectionView名称,但没有结果。

有人可以帮我吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)