【发布时间】:2014-07-18 02:09:33
【问题描述】:
我的 WPF XAML 文件中有以下代码:
<DataGrid ItemsSource="{Binding CustomersViewModel}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Customer">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel DataContext="{Binding}">
<StackPanel.ToolTip>
<ToolTip DataContext="{Binding RelativeSource={RelativeSource Self},
Path=PlacementTarget.DataContext}">
<TextBlock>
<Run Text="Customer Name: "/>
<Run Text="{Binding FullName}"/>
</TextBlock>
</ToolTip>
</StackPanel.ToolTip>
<TextBlock Text="{Binding FullName}"/>
<TextBlock Text="{Binding Address}" />
<TextBlock Text="{Binding BirthDate}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
public ObservableCollection<CustomerViewModel> CustomersViewModel
我添加了 ToolTip DataContext 属性,现在崩溃消失了,但它没有绑定到任何东西,而且 FullName 是空的。 StackPanel 位于 Datagrid 内部,定义如下:
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
更新:
public partial class CustomersScreen : UserControl
{
private ObservableCollection<CustomerViewModel> _customersViewModel;
public CustomersScreen ()
{
InitializeComponent();
_customersViewModel= new ObservableCollection<CustomerViewModel>()
{
new CustomerViewModel() { FirstName = "Mary", LastName = "Kate", City="Houston", State="Texas", BirthDate = "12/19/2981"},
new CustomerViewModel() { FirstName = "John", LastName="Doe", City="Austin", State="Texas", BirthDate = "03/01/2001"}
};
this.DataContext = _customersViewModel;
}
public ObservableCollection<CustomerViewModel> CustomersViewModel
{
get { return _customersViewModel; }
}
}
【问题讨论】:
-
如果你只是使用简单的文本而不是
{Binding FullName},它工作正常,那么它一定是绑定有问题。这意味着您需要发布更多关于您的绑定的代码。