如何从 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 内