将字符串或属性传递给 WPF Code Behind
Posted
技术标签:
【中文标题】将字符串或属性传递给 WPF Code Behind【英文标题】:Passing strings or properties to WPF Code Behind 【发布时间】:2022-01-11 18:31:33 【问题描述】:我不知道如何将任何属性、字段或数据从我的主应用程序传递到 WPF 表单的“代码隐藏”中。
我正在尝试编写一个应用程序,让用户按照此示例从 WPF 表单中编辑一些 C# 参数:
https://www.tutorialspoint.com/wpf/wpf_data_binding.htm
该示例运行良好。唯一的问题是我不想将所有代码都放在表单的“代码隐藏”类中。程序必须做其他事情,它会有其他形式。
但我不知道如何将任何信息传递到后面的代码中。我什至在我的主应用程序中创建了一个公共静态字符串,但这似乎超出了 WPF 表单背后代码的范围。
(顺便说一句,我已经涉足 C# 编程很长一段时间了,但我仍然不了解很多更抽象的概念,例如部分类等。)
感谢您的帮助。
我的主要应用程序是 Revit 宏。这是带有公共静态字符串的主要应用程序代码:
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
namespace WPF2021Test
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.DB.Macros.AddInId("5973D9EF-F3DA-494B-9992-5636CB0DB94C")]
public partial class ThisApplication
///Revit stuff left out
public static string mycomment = "";
public void Tutorial1()
UIDocument uidoc = this.ActiveUIDocument;
Document doc = this.ActiveUIDocument.Document;
View pview = uidoc.ActiveView;
Window2 win2 = new Window2 ();
win2.Show();
```
And the code behind I tried:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Linq;
namespace WPF2021Test
/// <summary>
/// Interaction logic for Window2.xaml
/// </summary>
public partial class Window2 : Window
//The next line doesn't work
Person person = new Person Name = WPF2021Test.mycomment, Age = 26 ;
public Window2()
InitializeComponent();
this.DataContext = person;
private void Button_Click(object sender, RoutedEventArgs e)
string message = person.Name + " is " + person.Age;
MessageBox.Show(message);
public class Person
private string nameValue;
public string Name
get return nameValue;
set nameValue = value;
private double ageValue;
public double Age
get return ageValue;
set
if (value != ageValue)
ageValue = value;
【问题讨论】:
在这种情况下,“主应用程序”究竟是什么?能否请您出示您的代码? 它实际上是一个 Revit 宏。例如,这里是公开的代码:Hmmm....无法弄清楚如何将代码添加到评论中,我找不到回复的方法。我会尝试将代码添加到原始帖子中。 你想用公共静态字符串做什么? 我试图将它传递给后面的代码。 通过?如何?同样,您需要包含演示您正在尝试做什么的代码。 【参考方案1】:问题是,您已经决定将您的视图与“Person”的 DataContext 连接起来。
问题是你想做什么? 为什么将 DataContext 与 person 连接,然后使用后面的代码?这似乎没有意义。
请提供一些用例,为什么你甚至想连接后面的代码。
【讨论】:
以上是关于将字符串或属性传递给 WPF Code Behind的主要内容,如果未能解决你的问题,请参考以下文章
如何将键盘导航焦点传递给 WPF 中生成的 xaml?以及如何退货?