将实例化属性绑定到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
而不是使用资源?我想使用正常的类实例化
如果你说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面板设置数据上下文和绑定。也许在视觉上你能把事情做好。
试一下,如果失败了,告诉我哪里出错了