Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF如何使用当前方法将绑定应用于视图_C#_.net_Wpf - Fatal编程技术网

C# WPF如何使用当前方法将绑定应用于视图

C# WPF如何使用当前方法将绑定应用于视图,c#,.net,wpf,C#,.net,Wpf,我想将我的窗口/窗体转换为使用viewmodel绑定。但是,当我使用此方法时,会出现以下错误: BindingExpression路径错误:“DocumentTypeFieldDetailsViewModel” 在“对象”“DocumentTypeFieldDetailsViewModel”上找不到属性 (HashCode=13055244)”。 BindingExpression:Path=DocumentTypeFieldDetailsViewModel.Order; DataItem='D

我想将我的窗口/窗体转换为使用viewmodel绑定。但是,当我使用此方法时,会出现以下错误:

BindingExpression路径错误:“DocumentTypeFieldDetailsViewModel” 在“对象”“DocumentTypeFieldDetailsViewModel”上找不到属性 (HashCode=13055244)”。 BindingExpression:Path=DocumentTypeFieldDetailsViewModel.Order; DataItem='DocumentTypeFieldDetailsViewModel'(HashCode=13055244); 目标元素是“TextBox”(Name='OrderTextBox');目标属性为 “文本”(键入“字符串”)

这是我在此视图上声明的datacontext

<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>