wpf - WPF DataGrid MultiBinding 到 DataGrid 的 ItemSource 中的类
问题描述
这是我的第一个 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>
解决方案
所以我想通了。与其尝试将 Contact 类的每个元素传递给 MultiBinding,不如只传递类本身。然后使用转换器访问类元素(即名字、姓氏等)以返回所需的输出字符串。
<DataGridTextColumn x:Name="ContactColumn"
Header="Contact"
Width="Auto"
>
<DataGridTextColumn.Binding>
<MultiBinding Converter="{StaticResource NameConverter}" ConverterParameter="LastNameFirst">
<Binding Path="Contact"/>
</MultiBinding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
推荐阅读
- javascript - 在 contentediatable div 中的子字符串末尾设置光标
- c# - 如何将 ImagePath 存储在 Mysql 数据库中?
- mysql - 尝试使用参数创建简单过程时出错 - 需要标识符
- javascript - 如何映射`.find()`返回的数据?
- javascript - 尝试将页脚中的每个按钮设置为白色
- python - 为什么 Jupyter notebook 在 matplotlib xlabel() 之后会打印文本?
- python-3.x - 如何导入无法从 pip/conda 存储库安装的 Python 包(Pytorch-neat)?
- javascript - 按降序和升序对数组进行排序
- c# - 将页面加载/加载事件绑定到 ICommand
- c - 如何使用 yacc 解析 if /else 语句