【发布时间】:2018-07-06 18:13:05
【问题描述】:
这是我的第一个 WPF 应用程序。我目前有一个绑定到实体框架对象的 DataGrid。该对象包含一个类作为其联系人项目之一(名字、中间名等)。
所以我的问题是:如何使用该类的元素在数据列上使用 MultiBinding?
这里是代码。我正在尝试使用转换器绑定联系人名称。转换器根据传递的参数显示名称。
<DataGrid Grid.Row="2"
x:Name="GridResult"
AutoGenerateColumns="False"
CanUserAddRows="False"
MinHeight="{Binding DataGridMinHeight}"
ItemsSource="{Binding Results}"
BorderBrush="{StaticResource DarkBlueBrush}"
BorderThickness="0 1 0 0"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
IsReadOnly="True"
FontFamily="{StaticResource DefaultFont}"
HeadersVisibility="Column"
ColumnHeaderStyle="{StaticResource DataGridHeaderCenter}">
<DataGrid.InputBindings>
<MouseBinding Gesture="LeftDoubleClick"
Command="{Binding DetailsCommand}"
CommandParameter="{Binding ElementName=GridResult, Path=SelectedItem.AssistanceId}" />
</DataGrid.InputBindings>
<DataGrid.Columns>
<DataGridTextColumn x:Name="NameColumn"
Binding="{Binding LinkName}"
Header="Reference"
Width="Auto" />
<DataGridTextColumn x:Name="CompanyColumn"
Binding="{Binding Company.CompanyName}"
Header="Company"
Width="Auto" />
<DataGridTextColumn x:Name="ContactColumn"
Header="Contact"
Width="Auto" >
<DataGridTextColumn.Binding>
<MultiBinding Converter="{StaticResource NameConverter}" ConverterParameter="LastNameFirst" >
<Binding Source="Contact" Path="Salutation"/>
<Binding Source="Contact" Path="FirstName"/>
<Binding Source="Contact" Path="MiddleName"/>
<Binding Source="Contact" Path="LastName"/>
<Binding Source="Contact" Path="Suffix"/>
</MultiBinding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
【问题讨论】:
-
<Binding Path="Contact.Salutation"/>有效吗? -
@Bijan 刚试过。不,它没有。我的转换器说该对象为空。
-
所以联系人对象为空。您可以通过将
FallbackValue=""添加到绑定来避免看到unsetvalue -
@Bijan 我可以在 Autos 窗口的调试器中看到返回的结果确实有一个完整的“Contact”对象。它只是没有到达 DataGrid。
标签: wpf entity-framework mvvm data-binding wpfdatagrid