c# - wpf xaml 绑定(bind)到在代码隐藏中创建的对象

标签 c# wpf xaml binding

首先,我对 C# 和 xaml 还很陌生。

我看过、检查过关于绑定(bind)的教程,但我看到的大部分内容都是在 xaml 中创建一个对象。但是我想在代码中创建对象,然后绑定(bind)到它的属性。此外,稍后我将在代码中定义几个对象。一般来说,我想绑定(bind)到文本框。

通常我的代码看起来像这样:

主窗口.xaml.cs

public partial class MainWindow : Window
{
    MyTestObject myTestObject;

    public MainWindow()
    {
        myTestObject= new MyTestObject ();
        this.DataContext = this;
        InitializeComponent();

    }
}

MyTestObject.cs

class MyTestObject : INotifyPropertyChanged
{
    public MyTestObject ()
    {

    }

    private string testString = "Test";
    public string TestString
    {
        get { return testString; }
        set
        {
            if (value == testString) return;
            testString = value;
            this.OnPropertyChanged("TestString");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
    }
}

最终我会有相当多的(数字)属性,它们将显示在几个文本框中,因为该软件旨在作为发送测量数据的外部硬件组件的接口(interface)。我尝试了几种绑定(bind)方式,但我还没有成功。我将非常感激如何将前面提到的属性绑定(bind)到 TextBox 的示例。

最佳答案

将 Datacontext 设置为 myTestObject。或者,为 myTestObject 创建一个公共(public)属性并将 Xaml 绑定(bind)设置为 {Binding MyTestObjectPropertyHere.TestString}

例如:

public partial class MainWindow : Window
{
    MyTestObject myTestObject;

    public MainWindow()
    {
        myTestObject = new MyTestObject ();

        this.DataContext = myTestObject;

        InitializeComponent();

    }
}

Xaml

<TextBox Text="{Binding Path=TestString}" />

绑定(bind)到 MainWindow 作为数据上下文的示例:

public partial class MainWindow : Window
{
    MyTestObject myTestObject;

    public MyTestObject MyTestObjectProperty { get { return myTestObject; } }

    public MainWindow()
    {
        myTestObject = new MyTestObject ();

        this.DataContext = this;

        InitializeComponent();

    }
}

Xaml

<TextBox Text="{Binding Path=MyTestObjectProperty.TestString}" />

关于c# - wpf xaml 绑定(bind)到在代码隐藏中创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19981966/

相关文章:

c# - WPF/C# : Disable Drag & Drop for TextBoxes?

WPF 内发光效果

c# - 当文本超出范围 WPF 时显示省略号 (...) 按钮

c# - WPF:使用虚拟键盘

c# - 目标 .NET 4.x 和 .NET Standard 2.0

c# - 如何在不使用第三方库的情况下从 HTML 中提取文本?

c# - AutoMapper:手动设置属性

c# - Prism IRegionNavigationJournal.GoBack 不工作

c# - 将当前身份验证凭据从 UWP 应用程序传递到 Web 服务,以使用这些凭据访问服务器上的资源

wpf - 如果第一个属性是 "undefined",则绑定(bind)到第二个属性