我在理解数据绑定(bind)时遇到了一些困难。
我正在尝试学习 Windows Phone 8
开发。
我想在这里理解一些示例代码。
在 MainPage.xaml
中,他定义了 DataContext
:
<phone:PhoneApplicationPage.DataContext>
<Binding Path = "Master"
Source="{StaticResource Locator}" />
</phone:PhoneApplicationPage.DataContext>
Locator
是 ViewModelLocator
在 App.xaml
中定义为 Resource
并且
Master
是 MasterViewModel
类型的公共(public)属性。
所以我认为这意味着您现在可以访问 MasterViewModel
类的属性。
你有。但是在同一页面上,他绑定(bind)了不在 MasterViewModel
中的属性,而是在一个完全不同的 ViewModel
中:
Text="{Binding Model.FirstName}"
Model
是不同 ViewModel
中的一个属性。
那么他怎么访问呢?据我所知,他没有在某处覆盖 DataContext
。
我错过了什么?
我没有发布很多代码,因为我想我还不了解数据绑定(bind),答案对您来说是显而易见的。如果需要,我可以向您展示更多代码,这是来自 Laurent Ibugnion 的示例代码。
提前致谢
编辑: 在他的视频中,他说他可以使用 dataBinding,因为在 DataTemplate 中,DataContext 被设置为不同的 ViewModel ...但我看不到他在哪里设置这个 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}" />
谢谢你的帮助
最佳答案
您向我们展示的代码是一个作为资源的 ItemTemplate。数据绑定(bind)在列表框中。在那里你绑定(bind)到 SelectedFriend。
<ListBox ItemsSource="{Binding Friends}"
ItemTemplate="{StaticResource FriendItemTemplate}"
SelectedItem="{Binding SelectedFriend, Mode=TwoWay}" />
当没有应用其他数据绑定(bind)时,使用 DataContext 属性。
关于c# - 了解 Windows Phone 开发中的数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14911877/