微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin 在 ControlTemplate 之外形成访问元素

如何解决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 举报,一经查实,本站将立刻删除。