【发布时间】:2019-07-02 08:40:55
【问题描述】:
我有一个组合框,其中包含一个 ObservableCollection 的项目源
listSites = new ObservableCollection<SiteData>()
{
new SiteData("Site 1", true, "HomeAutomation", "Green"),
new SiteData("Site 2", true, "HomeAutomation", "Green"),
new SiteData("Site 3", true, "HomeAutomation", "Green"),
new SiteData("Site 4", false, "HomeAlert", "Red"),
new SiteData("Site 5", true, "HomeAutomation", "Green"),
new SiteData("Site 6", true, "HomeAutomation", "Green"),
new SiteData("Site 7", true, "HomeAutomation", "Green"),
new SiteData("Site 8", false, "HomeAlert", "Red"),
new SiteData("Site 9", true, "HomeAutomation", "Green"),
new SiteData("Site 10", false, "HomeAlert", "Red"),
};
cbxSites.ItemsSource = listSites;
Combobox 也有一个指向 StaticResource 的 ItemTemplate:
<ComboBox x:Name="cbxSites" VerticalAlignment="Top" Width="250" Margin="0,
0, 0, 0" BorderBrush="White"
ItemsSource="{Binding listSites}" ItemTemplate="
{StaticResource SiteComboBoxItemTemplate}"
HorizontalContentAlignment="Center"
SelectionChanged="CbxSites_SelectionChanged"
IsEditable="True" />
<DataTemplate x:Key="SiteComboBoxItemTemplate">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<materialDesign:PackIcon Kind="{Binding StatusIcon}"
Width="30" Height="30" Foreground="{Binding StatusColour}"
VerticalAlignment="Center" HorizontalAlignment="Right" />
<TextBlock Text="{Binding SiteName}" Margin="20, 0, 0, 0" />
</StackPanel>
</DataTemplate>
当 ComboBox 上的 IsEditable 设置为 false 时,绑定有效,我可以单击 Combobox 并查看所有名称(站点 1、站点 2、站点 3 等),然后单击一个项目,它会填充相同的名称如您所料,组合框中的名称。当 IsEditable 为真时,组合框的下拉列表仍然正确显示站点名称(站点 1、站点 2、站点 3 等),但是当我选择一个时,而不是在组合框中填充该站点的相同名称,我看到“CipClient.SiteData”代替。为什么会这样,我该如何解决?
【问题讨论】:
-
你读过这些Remarks吗?
标签: c# wpf data-binding