C# WPF如何使用当前方法将绑定应用于视图
我想将我的窗口/窗体转换为使用viewmodel绑定。但是,当我使用此方法时,会出现以下错误: BindingExpression路径错误:“DocumentTypeFieldDetailsViewModel” 在“对象”“DocumentTypeFieldDetailsViewModel”上找不到属性 (HashCode=13055244)”。 BindingExpression:Path=DocumentTypeFieldDetailsViewModel.Order; DataItem='DocumentTypeFieldDetailsViewModel'(HashCode=13055244); 目标元素是“TextBox”(Name='OrderTextBox');目标属性为 “文本”(键入“字符串”) 这是我在此视图上声明的datacontextC# WPF如何使用当前方法将绑定应用于视图,c#,.net,wpf,C#,.net,Wpf,我想将我的窗口/窗体转换为使用viewmodel绑定。但是,当我使用此方法时,会出现以下错误: BindingExpression路径错误:“DocumentTypeFieldDetailsViewModel” 在“对象”“DocumentTypeFieldDetailsViewModel”上找不到属性 (HashCode=13055244)”。 BindingExpression:Path=DocumentTypeFieldDetailsViewModel.Order; DataItem='D
<Window.DataContext>
<ViewModels:DocumentTypeFieldDetailsViewModel/>
</Window.DataContext>
这是加载窗口时加载数据的方式
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.DataContext = new DocumentTypeFieldDetailsViewModel();
if (IsNew != true)
{
var dtd = fieldData.Get(FieldId);
if (dtd == null)
{
Error("Field not found");
this.Close();
}
DocumentTypeFieldDetailsViewModel dtfevm = new DocumentTypeFieldDetailsViewModel
{
Id = dtd.Id,
Name = dtd.Name,
Description = dtd.Description,
DocumentTypeId = dtd.DocumentTypeId,
Order = dtd.Order,
OrganizationId = dtd.OrganizationId
};
}
}
因为datacontext绑定到DocumentTypeFieldDetailsViewModel的实例,所以u应该直接访问它的属性 错误表明,datacontext没有DocumentTypeFieldDetailsViewModel.Order属性,因为u绑定到DocumentTypeFieldDetailsViewModel的实例
<TextBox Grid.Row="1" Grid.Column="0"
VerticalAlignment="Stretch" x:Name="OrderTextBox"
PreviewTextInput="NumberValidation_PreviewTextInput"
VerticalContentAlignment="Center" Text="{Binding Order}/> //here u can access the property Order directly.
您正在xaml和代码隐藏中分配datacontext。这是不对的。设置datacontext。很抱歉,我尝试了您的方法,但没有显示任何内容。我设置了删除this.DataContext行并将其设置在xaml端,但没有显示任何内容。如果还需要在xaml中设置对象的值,请检查编辑。我相信你们一定是刚刚创造了这个物体。你能发布更新的代码吗。错误消失了吗?在代码隐藏中分配datacontext,并从xamlI中删除,以了解问题所在。我的this.datacontext为空。后来我不得不将我的viewmodel分配给它。将“dtfevm”分配为数据内容。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.DataContext = new DocumentTypeFieldDetailsViewModel();
if (IsNew != true)
{
var dtd = fieldData.Get(FieldId);
if (dtd == null)
{
Error("Field not found");
this.Close();
}
DocumentTypeFieldDetailsViewModel dtfevm = new DocumentTypeFieldDetailsViewModel
{
Id = dtd.Id,
Name = dtd.Name,
Description = dtd.Description,
DocumentTypeId = dtd.DocumentTypeId,
Order = dtd.Order,
OrganizationId = dtd.OrganizationId
};
}
}
<TextBox Grid.Row="1" Grid.Column="0"
VerticalAlignment="Stretch" x:Name="OrderTextBox"
PreviewTextInput="NumberValidation_PreviewTextInput"
VerticalContentAlignment="Center" Text="{Binding Order}/> //here u can access the property Order directly.
<Window.Resources>
<local:DocumentTypeFieldDetailsViewModel
Order="SomeOrder"/>
</Window.Resources>