Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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
Wpf 将对象属性值放入文本框的时间很长_Wpf_Data Binding_Mvvm - Fatal编程技术网

Wpf 将对象属性值放入文本框的时间很长

Wpf 将对象属性值放入文本框的时间很长,wpf,data-binding,mvvm,Wpf,Data Binding,Mvvm,我是MVVM设计模式的新手,我正在从事一个自动化发货流程的项目 我遇到的特殊问题是我有一个UserControl(我的EditShipmentView),当它加载时,会将它的ViewModel分配给它的DataContext。ViewModel被传递一个recordID,它使用该recordID提取表示装运的实体。它成功地做到了这一点,正如我在Mole(可视化工具)中看到的那样 下面是一个XAML片段,显示了前两个文本框,以及我认为绑定应该是什么样子 <local:SnazzyForm B

我是MVVM设计模式的新手,我正在从事一个自动化发货流程的项目

我遇到的特殊问题是我有一个UserControl(我的EditShipmentView),当它加载时,会将它的ViewModel分配给它的DataContext。ViewModel被传递一个recordID,它使用该recordID提取表示装运的实体。它成功地做到了这一点,正如我在Mole(可视化工具)中看到的那样

下面是一个XAML片段,显示了前两个文本框,以及我认为绑定应该是什么样子

<local:SnazzyForm Background="#FF318AE1">

    <Grid Margin="6,0,0,0">

        <TabControl Style="{DynamicResource SnazzyTabControl}" TabStripPlacement="Left" Background="{x:Null}" BorderBrush="{x:Null}" Margin="0,0,0,50">
            <TabItem Header="Overview" Style="{DynamicResource TransparentTabItems}">
                <Grid Margin="6,0,0,0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>

                    <StackPanel DataContext="{Binding Path=ShipmentRecord}">
                        <TextBlock HorizontalAlignment="Left" Text="Contact Info" TextWrapping="Wrap" Style="{DynamicResource TitleText}"/>
                        <Path Fill="#FFFFB900" Stretch="Fill" HorizontalAlignment="Left" Width="200" Height="2" Data="M0,16.5 L278.5,16.5" Stroke="#FFFFB900"/>
                        <StackPanel Margin="0,10,0,0">
                            <Grid Margin="0,16,0,0">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width=".40*"/>
                                    <ColumnDefinition Width=".60*"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock HorizontalAlignment="Right" Text="Company" TextWrapping="Wrap" VerticalAlignment="Top" Style="{DynamicResource FieldLabel}" TextAlignment="Right" Margin="0,2,9,0"/>
                                <TextBox Text="{Binding Path=CompanyName, Mode=TwoWay, UpdateSourceTrigger=LostFocus, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" TextWrapping="Wrap" d:LayoutOverrides="Height" Grid.Column="1"/>
                            </Grid>
                            <Grid Margin="0,16,0,0">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width=".40*"/>
                                    <ColumnDefinition Width=".60*"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock HorizontalAlignment="Right" Text="Contact" TextWrapping="Wrap" VerticalAlignment="Top" Style="{DynamicResource FieldLabel}" TextAlignment="Right" Margin="0,2,9,0"/>
                                <TextBox Grid.Column="1" Text="{Binding Path=ContactName}" TextWrapping="Wrap" d:LayoutOverrides="Height"/>
                            </Grid>

所以,回顾一下。。。 EditShipmentView(从SnazzyForm继承) DataContext是EditShipmentViewModel EditShipmentViewModel.ShipmentRecord已使用装运对象(成功)填充 ShipmentRecord.CompanyName是一个字符串,显然应该返回公司名称

请记住,这只是我最近的一次尝试。以前,我没有绑定Stackpanels DataContext,而是将文本框绑定为“{Binding Path=ShipmentRecord.CompanyName}”,这似乎是一百种不同的变体。我留下的头发正在迅速退去。求你了,想想我的头发,送我帮忙


科里

给我们看看你的代码?您的视图模型可能只是在视图更改时没有通知视图。如果绑定不正确(未解析),您将在VisualStudio的“调试输出”窗口中看到相应的输出。同时检查。

确保
EditShipmentViewModel
(可能的罪魁祸首)和
ShipmentRecord
实现


如果在设置初始视图后加载数据,并且
EditShipmentViewModel
类没有为
ShipmentRecord
引发PropertyChanged事件,则视图(xaml)将永远不会知道更新绑定,您将看到一个空字符串。

这应该可以工作-在输出窗口中是否有任何数据绑定错误?在输出窗口中没有任何数据绑定错误。起初我是这样,但那是因为记录加载正在悄无声息地失败。一旦修复,仍然没有文本,也没有错误告诉我原因。科里:看我的(新)答案-这是我能想到的主要问题,在这种情况下。OnPropertyChanged(“ShipmentRecord”)早在ViewModel创建的初始阶段就注释掉了,现在是一个问题的罪魁祸首,让我。。。很生气。谢谢你的帮助!科里