【问题标题】:C# WPF | how i can change text from button on another function?? :(((( [duplicate]C# WPF |我如何从另一个功能上的按钮更改文本? :(((( [复制]
【发布时间】:2021-06-04 17:32:13
【问题描述】:

我刚开始用 c# 编程,我不明白我是否真的有语法或 WPF 问题,我想更改按钮的文本,但我不能这样做,如果有人可以帮助我,我将不胜感激。

    public MainWindow()
    {
        InitializeComponent();

        Grid mainGrid = new Grid();

        this.Content = mainGrid;

        Button BTN = new Button();
        
        BTN.Width = 175;
        BTN.Height = 23;
        BTN.Margin = new Thickness(0, -30, 0, 0);
        BTN.Click += BTNclick;
        
        WrapPanel BTNwrap = new WrapPanel();
        
        TextBlock BTNtext = new TextBlock();
        
        BTNtext.Text = "Click";
        
        BTNwrap.Children.Add(BTNtext);
        
        BTN.Content = BTNwrap;

        mainGrid.Children.Add(BTN);

    }

    private void BTNclick(object sender, RoutedEventArgs e)
    {
        //BTNtext.Text = "Clicked!";
    }

【问题讨论】:

  • 除了答案中所说的之外,在后面的代码中创建 UI 在 WPF 中被认为是不好的做法。您应该在 XAML 中声明这些元素,并在 TextBlock 上简单地设置 x:Name="BTNtext",这将自动在 MainWindow 类中生成一个适当的字段。学习 WPF 不是一天完成的。考虑阅读 Adam Nathan 所著的WPF Unleashed 之类的书。

标签: c# wpf


【解决方案1】:

由于您在 MainWindow 的构造函数中定义了 BTNtext TextBlock 类,因此您无法在其他函数中访问它。您需要在 MainWindow 类级别(在构造函数之外)定义您的 BTNtext TextBlock 类:

private TextBlock BTNtext;

在您的构造函数中,您创建一个新实例并将其分配给类成员:

BTNtext = new TextBlock();

然后您可以在点击事件处理程序中访问您的 BTNtext:

private void BTNclick(object sender, RoutedEventArgs e)
{
    BTNtext.Text = "Clicked!";
}

我注意到的几件事:

  • Button 类有一个 content 属性,您可以使用它来简单地显示文本:Content MSDN Docs
  • 了解了基础知识后,您应该查看 MVVM 模式:MVVM SO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2018-07-24
    相关资源
    最近更新 更多