gpt4 book ai didi

c# - WPF 组合框所选项目错误 - 显示 "System.Data.Entity.DynamicProxies"

转载 作者:行者123 更新时间:2023-11-30 20:55:48 26 4
gpt4 key购买 nike

我已经进行了大量的尝试和论坛帖子,但我仍然无法解决我的问题。

问题显示来自 Entity Framework dbcontext 的数据的组合框不显示所选值,但确实适用于项目列表。选中的项目只是显示

System.Data.Entity.DynamicProxies.Equipment_37EBC79AEAECCCCD132FD15F1C9172DF4DD402B322A9C5762AE640F03887F702

但是组合框的列表显示正确....

设置我有一个 dbcontext,其中包含一个名为设备的类。设备有两个项目我想展示字符串标记;位置.名称;

选定的项目被破坏,列出作品

  <ComboBox x:Name="cbxCopyTo" Grid.Row="2" Grid.Column="1"
IsEditable="True" IsTextSearchEnabled="True" IsTextSearchCaseSensitive="False"
ItemsSource="{Binding}">
<ComboBox.SelectedValue>
<DataTemplate>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" >
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} ({1})">
<Binding Path="Tag" />
<Binding Path="Location.Name" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.SelectedValue>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" >
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} ({1})">
<Binding Path="Tag" />
<Binding Path="Location.Name" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

你可以在上面看到我什至尝试明确设置所选值;但它没有用。我确实注意到,当我尝试使用转换器时,当我将转换器放在那里时,它从未被 SelectedItem 或 SelectedValue 调用。

如果我忽略位置(从数据源拖放中获取),则以下内容有效。这会正确显示列表和所选项目。

<Label Grid.Row="1" Grid.Column="0" Content="Copy From:" />
<ComboBox x:Name="cbxCopyTo" Grid.Row="1" Grid.Column="1"
IsEditable="True" IsTextSearchEnabled="True" IsTextSearchCaseSensitive="False"
DisplayMemberPath="Tag" ItemsSource="{Binding}">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel/>
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>

请帮忙;我将不胜感激!

最佳答案

已解决 - 其他信息

好吧,我找到了制作串联属性的方法(就像@Andy 建议的那样),但它没有出现在数据库中。

通过使用代码优先注释,您可以在 EF 模型上声明一个属性,该属性不会映射到数据库,但可以像任何数据库属性一样查询或绑定(bind)。这是在您的 EF 模型类的声明中完成的,如下所示:

/// <summary>
/// Creates concatenation object that will not be mapped in the database but will be in the
/// Object Relational Mapping (ORM) of the EF model.
/// </summary>
[NotMapped]
public string TagAndLocation { get { return Tag + " (" + Location.Name + ")"; } }

这样我就可以通过以下 XAML 使用简单绑定(bind)到“TagAndLocation”:

        <ComboBox x:Name="cbxCopyTo" Grid.Row="2" Grid.Column="1"
IsEditable="True" IsTextSearchEnabled="True" IsTextSearchCaseSensitive="False"
DisplayMemberPath="TagAndLocation" ItemsSource="{Binding}">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel/>
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>

再次感谢@Andy 和@aguedo valdes 花时间提出建议。

关于c# - WPF 组合框所选项目错误 - 显示 "System.Data.Entity.DynamicProxies",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18069889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com