将实例化属性绑定到UI

本文关键字:UI 绑定 属性 实例化 | 更新日期: 2023-09-27 18:12:37

我有这样一个类:

public class property : DependencyObject, INotifyPropertyChanged
{
    private string _myproperty;
    public string MyProperty
    {
        get
        {
            return this._myproperty;
        }
        set
        {
            this._myproperty = value;
            NotifyPropertyChanged("MyProperty");
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string sproperty)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(sproperty));
        }
    }
}

在主窗口中,我创建了这个类myclass xx = new myclass();的实例,在那里我用字符串数据填充我的属性,并将其绑定到XAML,如下所示:

<Window.Resources>
    <local:property x:Key="prop"></local:property>
</Window.Resources>

在我的TextBox中,我设置了绑定:

Text="{Binding Path=MyProperty, Source={StaticResource prop}}" BorderBrush="#FFC7CACC" />

这将无法工作,除非我使用现有的资源:

var property = (local:property)Resources["prop"];

是否有另一种方法来更新TextBox而不是使用资源?我想使用正常的类实例化

将实例化属性绑定到UI

如果你说Text="{Binding Path=MyProperty, Source={StaticResource prop}}" BorderBrush="#FFC7CACC" />表示你的VM是一个属性类的实例。

尝试用网格包围文本框,并使用属性类的实例设置网格dataContext。

我的意思

<Grid DataContext="from view or from behind assign your vm= new property()">
 <TextBox Text="{Binding Path=MyProperty" ....../>
</Grid>

试试这个:

<Window.DataContext>
 <local:property/>
<Window.DataContext>
<TextBox Text="{Binding MyProperty}"/>

设置数据上下文后,尝试构建应用程序,如果可以在本地命名空间中找到属性类,则构建将成功。

在构建你的应用程序后,如果成功,你可以尝试设置绑定,并且智能感知会自动在绑定选项中显示MyProperty。

如果这不起作用,请尝试使用Properties面板设置数据上下文和绑定。也许在视觉上你能把事情做好。

试一下,如果失败了,告诉我哪里出错了