我已經經歷了大量的嘗試和論壇帖子,但我仍然無法解決我的問題。WPF組合框選中的項目錯誤 - 顯示「System.Data.Entity.DynamicProxies」
ISSUE 一個ComboBox從實體框架的DbContext不顯示所選擇的值,但沒有工作的項列表中顯示的數據。 選定的項目只是顯示
System.Data.Entity.DynamicProxies.Equipment_37EBC79AEAECCCCD132FD15F1C9172DF4DD402B322A9C5762AE640F03887F702
但組合框顯示正確的名單....
SETUP 我有一個包含一個名爲設備的類的dbcontext。 設備有兩個要顯示的項目 字符串標籤; Location.Name;
所選項目猛擊,列表適用
<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>
請幫忙;我將不勝感激!
謝謝@安迪,我感謝您的回答。這個選擇使用不同的成員是我倒退;但由於其他因素,我寧願數據庫不要有它。 也爲我的學習,因爲這只是我在這個綁定的東西上抓表面。 如果有人有另一種解決方案,我很樂意聽到它。 – Asvaldr