DataGridTemplateColumn未绑定ItemSource(WPF)中的对象
本文关键字:对象 WPF 绑定 ItemSource DataGridTemplateColumn | 更新日期: 2023-09-27 18:03:49
我创建的对象类型是Message
,而不是列表TableDataGrid_ItemSource = new ObservableCollection<Message>()
。以前我只有DataGridTextColumn
列,它们都绑定了正确类型的对象Message。
<DataGridTextColumn Header="Type" Binding="{Binding MessageCategoryID.Type}" Width="*"/>
<DataGridTextColumn Header="Full text" Binding="{Binding FullTextMessage}" Width="*"/>
现在,我想通过添加一个文本和一个图像来自定义列,这两种类型都是Message
对象。
<DataGridTemplateColumn Header="Message ID">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding MessageID, Mode=OneWayToSource}" Width="*" Visibility="Visible"/>
<Image Source="{Binding Image}" HorizontalAlignment="Left" Width="20" Height="20"></Image>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
当我运行时,我得到这个错误:
类型为的未处理异常中发生"System.Windows.Markup.XamlParseException"PresentationFramework.dll
附加信息:在上提供价值"System.Windows.Baml2006.TypeConverterMarkupExtension"引发了例外
<Label Width="*"
这就是你麻烦的根源。Width="*"
-仅适用于列和行。拆下它。如果要拉伸Label
和Image
,请将StackPanel
替换为网格。StackPanel
使其子代的大小最小化。