【发布时间】:2014-04-04 11:21:17
【问题描述】:
我有一个员工实体列表,绑定到一个实现 DataTemplate 的列表框。
数据模板:
<DataTemplate x:Key="EmployeeTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Vertical"
VerticalAlignment="Top" Margin="2">
<TextBlock Foreground="Black" FontSize="12"
VerticalAlignment="Bottom" Text="{Binding Path=Test}">
</TextBlock>
<TextBlock Foreground="Black" FontSize="12"
VerticalAlignment="Bottom" Text="{Binding Path=Language.ContactNumber}">
</TextBlock>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Vertical"
VerticalAlignment="Top" Margin="2">
<TextBlock Foreground="Black" FontSize="12"
VerticalAlignment="Bottom" Text="{Binding Path=IdNumber}">
</TextBlock>
<TextBlock Foreground="Black" FontSize="12"
VerticalAlignment="Bottom" Text="{Binding Path=ContactNumber}">
</TextBlock>
</StackPanel>
</Grid>
</DataTemplate>
列表框:
<ListBox ItemsSource="{Binding Path=Employees}"
x:Name="ListBoxEmployees"
ItemTemplate="{DynamicResource EmployeeTemplate}"
BorderBrush="DarkGray"
Margin="5"/>
我的 Datacontext 是一个名为 EmployeeViewModel 的视图模型,它包含员工的集合。这种绑定工作正常,员工得到展示,一切都很好。问题是 EmployeeViewModel 继承自包含名为 Language 的静态属性的基本抽象 ViewModel。这个模型有各种字段,我将标签绑定到整个应用程序。数据模板中的值不起作用。为什么?
附加信息:此列表框位于 mainwindow.xaml 上的用户控件中
编辑:
xmlns:viewModels="clr-namespace:POC.DesktopClient.ViewModels"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance viewModels:EmployeeViewModel}"
我的用户控件顶部的这些 XML 命名空间在绑定时允许 xaml 智能感知。智能确实拾取了语言对象及其内部的字段。
【问题讨论】:
-
也许你应该绑定到静态资源,检查这个stackoverflow.com/a/3862828/67505
-
尝试像“{Binding Source={StaticResource mvvm},Path=SelectedItem}”一样绑定
-
喜欢:
-
@Nomi 产生此错误:“资源“语言”无法解析。”
-
@Swifty 你必须在上面添加抽象视图模型类的引用,并在 xaml 的
中设置语言类对象,然后你才能解决这个错误。