我创建了一个 DataTemplate 来管理 ListBox 中项目的显示。当我在常规 WPF 应用程序中打开控件时,它可以正常工作。但是,当我在 Windows 窗体应用程序中托管的 Windows 窗体控件中打开它时,不使用数据模板。考虑到在这种情况下“FindResource”可能存在问题,我在代码隐藏中添加了 DataTemplate。在常规 WPF 应用程序中打开时它再次正常工作,但在 Windows 窗体应用程序中打开时失败。
如果我设置 ListBox 本身的背景,我会看到背景以及“应该”显示的所有项目的空白行 - 所以我知道数据正在到达那里,只是模板本身不适用。
加载windows窗体控件的代码:
_elementHost = new ElementHost();
_elementHost.Dock = DockStyle.Fill;
this.Controls.Add(_elementHost);
NavigationControl userControl = new NavigationControl(); // the wpf control
_elementHost.Child = userControl;
数据模板 xaml:
<DataTemplate x:Key="WorkingAccountResultTemplate" >
<StackPanel Orientation="Horizontal">
<TextBlock Text="Test" Width="50" Foreground="Purple" Background="AliceBlue"/>
<TextBlock Text="{Binding ItemKeyId}" HorizontalAlignment="Stretch" Background="Maroon" />
</StackPanel>
</DataTemplate>