我是MVVM設計模式的新手,我正在開發一個項目以自動運送流程。讓對象屬性值進入文本框需要一段時間
我遇到的特殊問題是我有一個UserControl(我的EditShipmentView),當它加載時,將其ViewModel賦值給它的DataContext。 ViewModel被傳遞一個recordID,它用來拉取代表貨物的實體。它成功地完成了這一工作,因爲我可以在Mole(可視化工具)中看到它。
下面是一個XAML片段,顯示了第一對TextBoxes,以及我認爲綁定應該是什麼樣子。
<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,並將Textboxes綁定爲「{Binding Path = ShipmentRecord.CompanyName}」,看起來像是上百種不同的變體。我留下的頭髮正在迅速退去。請想想我的頭髮,發送幫助。
Cory
這應該工作 - 你是否在輸出窗口中得到任何數據綁定錯誤? – 2010-04-06 18:36:05
我沒有收到輸出中的任何數據綁定錯誤。起初我是,但那是因爲錄音加載失敗了。一旦修復,仍然沒有文字,也沒有錯誤告訴我爲什麼。 – CodeWarrior 2010-04-06 18:40:31
科裏:看到我的(新)答案 - 這是我能想到的主要事情,在這種情況下。 – 2010-04-06 18:42:15