MVVM 디자인 패턴을 처음 사용하며 프로젝트를 자동화하여 배송 프로세스를 자동화하고 있습니다.개체 속성 값을 텍스트 상자로 가져 오는 데 시간이 많이 걸리는 경우
내가 겪고있는 특정 문제는 UserControl (내 EditShipmentView)을로드 할 때 ViewModel을 DataContext에 할당한다는 것입니다. ViewModel은 레코드를 전달하는 엔티티를 가져 오는 데 사용하는 recordID를 전달받습니다. 이 작업은 Mole (시각화 프로그램)에서 볼 수 있으므로 성공적으로 수행됩니다.
아래는 첫 번째 몇 개의 TextBox를 보여주는 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.ShipmentRecord 발송물 객체 ShipmentRecord.CompanyName과 (성공적으로) 채워집니다 EditShipmentViewModel 것은 분명를 반환해야하는 문자열입니다 회사의 이름.
가장 최근 시도 인 점에 유의하십시오. 이전에는 Stackpanels DataContext를 바인딩하지 않았으며 "{Binding Path = ShipmentRecord.CompanyName}"같은 텍스트 상자가 바인딩되어 있었고 백 가지 변형이있는 것 같습니다. 내가 남긴 머리카락은 급속히 물러나고있다. 제 머리를 생각하고 도움을주세요.
코리
출력 창에 데이터 바인딩 오류가 발생합니까? –
출력에서 데이터 바인딩 오류가 발생하지 않습니다. 처음에는 그랬지만 레코드로드가 조용히 실패했기 때문입니다. 일단 고정되면, 여전히 텍스트가없고 오류가없는 이유를 말해주십시오. – CodeWarrior
코리 (Cory) : 내 (새로운) 답변을보십시오 -이 경우에 내가 생각할 수있는 중요한 것입니다. –