【问题标题】:How to link or reference a UI control such as a button in code如何链接或引用 UI 控件,例如代码中的按钮
【发布时间】:2013-07-12 14:51:48
【问题描述】:

我一直在寻找并试图弄清楚如何将变量链接到 UI 控件,以便我可以使用该变量在代码中执行特定 UI 的操作。

例如,我的 MainPage.xaml 中有一个名为 NextButton 的按钮。我想定义一个变量,比如 Button 类型的 nextButton,以便我可以在我的 c# 类中执行按钮操作,比如 nextButton.Content。看来这只能在 MainPage.xaml 中完成,即使这样我也无法弄清楚如何将按钮变量链接到特定按钮。

为了让自己更清楚,我只想说你可以在android中使用findViewById做这样的事情。

【问题讨论】:

  • 如果您正在谈论从其他类访问 UI 元素,这可能会有所帮助:stackoverflow.com/questions/6142288/…
  • 好的,谢谢,我去看看。
  • 你的问题有点混乱。您是否尝试在声明页面或其他页面中使用该变量?当您为控件命名时,会自动创建一个变量供您在页面中使用。
  • @anderZubi 我已经彻底看过了,但我不明白这里给出的答案:stackoverflow.com/a/6142318/1319753
  • @Alaa Masoud 我在 MainPage.xaml 中为控件命名,我想在其他类中引用该控件。

标签: c# xaml windows-phone-8 windows-phone


【解决方案1】:

我不确定我是否理解您的问题,但假设您在 Window 上有一个具有指定名称的 Button。在另一个类中访问该按钮的唯一方法是访问该类中的该窗口实例。

我相信窗口可以转换为框架元素,您可以使用方法 FindName Here 在该窗口内查找元素。但是,这只适用于您可以访问该类中的实例化 Window。

【讨论】:

  • 这实际上看起来可能对我有用。我会尽力让你知道。
【解决方案2】:

在 XAML 中:

<Button x:Name="nextButton" Text="Next" />

在相应的 .cs 文件中,成员变量 nextButton 将成为类的一部分:

nextButton.Content = SomethingAmazing;

【讨论】:

    【解决方案3】:

    这可能与您所追求的略有不同,但如果您只想更改按钮的内容,您可以使用数据绑定,然后直接为其他类提供数据访问点。

    对我来说,听起来您想直接从另一个视图更改另一个视图,这听起来不太“MVCey”。有一个通用的底层数据模型,然后改变它,让按钮弄清楚他们应该做什么。如果您的按钮执行方法或它的状态由方法处理。

    如果你真的想直接为按钮提供一个访问点,你可以有类似的东西

    public abstract class CommonUIControls {
        public static Button nextButton = null;
    }
    
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
            CommonUIControls.nextButton = nextButton;
        }
    }
    

    但是,我不建议这样做。

    【讨论】:

    • 它有效,但是,我认为使用数据绑定将按钮内容绑定到变量(这可能存在于静态类中),然后更改数据并让 UI 调整是更好的设计数据更改而不是从另一个视图访问视图的控件(关键字:数据绑定,mvc)。总而言之,我认为不确定的部分是您可能提供了从其他视图对按钮的“太宽”访问权限,而不仅仅是提供对您希望更改的内容/数据的访问点。希望这是有道理的。 :)
    • 我明白了。我想我将不得不阅读更多关于它是如何完成的。但现在我正在这样做。
    猜你喜欢
    • 2020-01-20
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 2021-11-26
    相关资源
    最近更新 更多