可以访问XAML页面MAUI的几个C#类

b91juud3  于 2023-03-10  发布在  C#
关注(0)|答案(1)|浏览(164)

我有一个XAML页面,绑定在c#类MainPage

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
    xmlns:local="clr-namespace:Project"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    x:Class="Project.MainPage">

    <Label x:Name="l1"/>
    <Label x:Name="l2"/>
</ContentPage>

下面是c#类MainPage,它可以访问标签l1l2

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    private void SetText1() => l1.Text = "Text 1";
}

我是否可以创建具有l1l2访问权限的第二类?如果可以,它看起来如何

我试过了:(不起作用

public partial class Class2 : ContentPage
{
    public Class2()
    {
        InitializeComponent();
    }

    private void SetText2() => l2.Text = "Text 2";
}

然后将Class2放到XAML页中的x:Class

x:Class="Project.MainPage, Project.Class2">
acruukt9

acruukt91#

根据您的描述,我建议您使用MessagingCenter来接近。
如果要将Class 2 page中的Label从Class 2 page中更改,只需订阅MainPage中的Class 2 page,并调用Send方法通知MainPage编辑l2的文本即可。

主页:

MessagingCenter.Subscribe<B,string> (this, "Tag", (sender,arge) =>  
{  
    // Do something set the text of l2 
})

第2类:

MessagingCenter.Send<B, string>(this, "Tag", "Text 2");

更新日期:

感谢@ewerspej的评论。
因为MessagingCenter在.NET 7中已弃用,并在CommunityToolkit.Mvvm NuGet包中替换为WeakReferenceMessenger。有关详细信息,请参阅Messenger
有关详细信息,请参阅此文档:https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/messagingcenter?view=net-maui-7.0

相关问题