Data Binding を理解するのに少し苦労しています。私はWindows Phone 8
開発を学ぼうとしています。
ここでいくつかのサンプルコードを理解しようとしています。
彼は次のようMainPage.xaml
に定義していDataContext
ます:
<phone:PhoneApplicationPage.DataContext>
<Binding Path = "Master"
Source="{StaticResource Locator}" />
</phone:PhoneApplicationPage.DataContext>
Locator
はinViewModelLocator
として定義され 、
タイプ のパブリック プロパティです。Resource
App.xaml
Master
MasterViewModel
MasterViewModel
これは、クラスのプロパティにアクセスできるようになったことを意味すると思いました。そして、あなたは持っています。しかし、同じページで、彼はMasterViewModel
ではなく、まったく異なる にあるプロパティにバインドしViewModel
ます。
Text="{Binding Model.FirstName}"
Model
は別の のプロパティViewModel
です。
では、どうすればアクセスできるのでしょうか? DataContext
私が見る限り、彼はどこかを上書きしませんでした。私は何が欠けていますか?
データバインディングをまだ理解していないと思うので、多くのコードを投稿しませんでした。答えは明らかです。必要に応じてさらにコードをお見せします。それは Laurent Ibugnion のサンプル コードです。
前もって感謝します
編集:彼のビデオでは、DataTemplate で DataContext が別の ViewModel に設定されているため、dataBinding を使用できると彼は言っています...しかし、彼がこの viewModel を設定する場所がわかりません:
<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Key="FriendItemTemplate">
<Grid Width="480"
Height="112"
Margin="0"
Background="#FF5E0000">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="124" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Rectangle Fill="#FF0B3100"
Stroke="Black"
Grid.ColumnSpan="2"
Visibility="{Binding OlderThanMeIndicatorVisibility, Mode=OneWay}" />
<Image Source="{Binding Model.PictureUri}"
VerticalAlignment="Top"
Margin="24,6,0,0" Height="100" />
<StackPanel Grid.Column="1">
<StackPanel Orientation="Horizontal"
Margin="12,0,0,0">
<TextBlock TextWrapping="Wrap"
Text="{Binding Model.FirstName}"
Style="{StaticResource PhoneTextGroupHeaderStyle}"
Margin="0" />
<TextBlock TextWrapping="Wrap"
Text=" "
Style="{StaticResource PhoneTextGroupHeaderStyle}"
Margin="0" />
<TextBlock TextWrapping="Wrap"
Text="{Binding Model.LastName}"
Style="{StaticResource PhoneTextGroupHeaderStyle}"
Margin="0" />
</StackPanel>
<TextBlock TextWrapping="Wrap"
Text="{Binding Model.DateOfBirth}"
Style="{StaticResource PhoneTextLargeStyle}" />
</StackPanel>
</Grid>
</DataTemplate>
</phone:PhoneApplicationPage.Resources>
編集:解決済み私はついにそれを見つけました、
ListBox ItemsSource="{Binding Friends}"
ItemTemplate="{StaticResource FriendItemTemplate}" SelectedItem="{Binding SelectedFriend, Mode=TwoWay}" />
ご協力いただきありがとうございます