如何从 Xamarin MacOS 开发中的另一个 C# 文件更新 ViewController.cs 中的“标签”?

Posted

技术标签:

【中文标题】如何从 Xamarin MacOS 开发中的另一个 C# 文件更新 ViewController.cs 中的“标签”?【英文标题】:How to update a "label" in ViewController.cs from another C# file in Xamarin MacOS development? 【发布时间】:2020-03-19 09:50:15 【问题描述】:

我正在 Xamarin 中开发一个小型 MacOS 应用程序并使用“Visual Studio for MAC”。我无法弄清楚如何从另一个 .cs 文件更新 ViewController.cs 文件中标签的值。

using System;
using AppKit;
using Foundation;

namespace FramesMac


    public partial class ViewController : NSViewController
    
        public ViewController(IntPtr handle) : base(handle)
        
        

        public override void ViewDidLoad()
        
            base.ViewDidLoad();
            // Do any additional setup after loading the view.
            lbl_message.StringValue="Processing..."
        

        public override NSObject RepresentedObject
        
            get
            
                return base.RepresentedObject;
            
            set
            
                base.RepresentedObject = value;
                // Update the view, if already loaded.
            
        

    
    

我只是想从另一个 .cs 文件更新 lbl_message.StringValue="Processing..."。

【问题讨论】:

【参考方案1】:

据我所知,最简单的方法是使用 Actions,首先创建一个方法:

private void SetLabelText(string Text)

   lbl_message.StringValue=Text;

现在通过构造函数使用动作将此方法的引用传递给下一个类:

public AnotherClass(Action<string> MyLabelCallback)

从 viewController 中创建一个实例,例如:

new AnotherClass(SetLabelText);

得到它之后,你可以调用这个方法并传递一个字符串来设置新的文本:

MyLabelCallback("Boom");

【讨论】:

在 ViewController.cs 中添加以下代码来更新标签文本 InvokeOnMainThread(() => myLabel.StringValue = "someString"; );

以上是关于如何从 Xamarin MacOS 开发中的另一个 C# 文件更新 ViewController.cs 中的“标签”?的主要内容,如果未能解决你的问题,请参考以下文章

ScrollView 在 Xamarin Forms 中的另一个 ScrollView 内

如何在 Xamarin 表单的另一个视图中重用缓存的图像

Xamarin 绑定到列表视图项模板中的另一个元素

访问 UI 组件并由 Xamarin 中的另一个线程覆盖它

macOS Sierra 10.12.6 可以与 Xamarin 开发一起使用吗

如何在 Xamarin 表单 macos 的条目(用于聊天)中添加自定义图像?