使用Name2值绑定文本框不起作用。代码是正确的,适用于简单的WPF应用程序。在devexpress中还有其他任何方法可以绑定吗?
<TextBox Height="20" TextWrapping="Wrap" Text="{Binding Path=Name2}" VerticalAlignment="Top" Margin="429,27,159,0" AcceptsReturn="True">
public partial class EntitiesView : UserControl, INotifyPropertyChanged
{
private string _name2;
public string Name2
{
get { return _name2; }
set
{
_name2 = value;
RaisePropertyChanged("Name2");
}
}
public EntitiesView()
{
Name2 = "abcdefffffffffffff";
DataContext = this;
InitializeComponent();
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
答案 0 :(得分:0)
此问题与DevExpress无直接关系。它与常见的MVVM概念有关。您说您正在使用MVVM,但是从您的代码中我看到您已在View中定义了Name2属性,并使用DataContext = this;
行将此View中的所有绑定重定向到此View实例。我认为这是错误的方式,您应该在继续之前了解有关MVVM概念的更多信息。
据我所知,DevExpress MVVM框架,代码中演示的绑定在运行时不起作用,因为此View 的DataContext
属性将被分配给相应的ViewModel实例申请开始。因此,正确的方法是:
DataContext = this;
行如果您仍想使用错误的方法,但要使其有效,请使用relative binding(但您还应删除DataContext = this;
行!!!)
<TextBlock Text="{Binding Name2, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"/>
P.S。如果您在DevExpress产品中发现问题或在使用时遇到问题,请使用DevExpress Support Center。