我在资源字典中定义了二维XAML数组,以存储WPF ComboBox数据内容,如下所示。
<x:Array x:Key="ThreatLevelArray" Type="{x:Type local:ThreatLevel}">
<local:ThreatLevel ThreatLevelName="Very Low" ThreatLevelNumber="0" />
<local:ThreatLevel ThreatLevelName="Low" ThreatLevelNumber="1" />
</x:Array>
此类在后面的代码中支持该数组。
public class ThreatLevel
{
public int ThreatLevelNumber { get; set; }
public string ThreatLevelName { get; set; }
}
组合框显示“ ThreatLevelName”,并使用“ ThreatLevelNumber”提供的值更新数据库中的“ ThreatLevel”字段。
<ComboBox x:Name="threatLevelComboBox" DisplayMemberPath="ThreatLevelName" IsEditable="True"
IsReadOnly="True"
ItemsSource="{StaticResource ThreatLevelArray}"
SelectedValue="{Binding Path=ThreatLevel, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"
SelectedValuePath="ThreatLevelNumber"
Style="{StaticResource ComboBoxStyle}" />
一切正常,但是我希望能够显示图像而不是“ ThreatLevelName”文本。我试过了 ....
public class ThreatLevel
{
public int ThreatLevelNumber { get; set; }
public string ThreatLevelName { get; set; }
public Image ThreatLevelImage { get; set; }
}
但是以下内容为我提供了错误:““图像”的TypeConverter不支持从字符串转换”。
<x:Array x:Key="ThreatLevelArray" Type="{x:Type local:ThreatLevel}">
<local:ThreatLevel ThreatLevelName="Very Low" ThreatLevelNumber="0" ThreatLevelImage="/RMS_EF6;component/RMS_Images/VeryLow.png"/>
<local:ThreatLevel ThreatLevelName="Low" ThreatLevelNumber="1" ThreatLevelImage="/RMS_EF6;component/RMS_Images/Low.png"/>
</x:Array>
我该如何解决此错误,并使用此过程创建如下所示的ComboBox。
<ComboBox x:Name="threatLevelComboBox" DisplayMemberPath="ThreatLevelImage" IsEditable="True"
IsReadOnly="True"
ItemsSource="{StaticResource ThreatLevelArray}"
SelectedValue="{Binding Path=ThreatLevel, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"
SelectedValuePath="ThreatLevelNumber"
Style="{StaticResource ComboBoxStyle}" />
相关分类