Я определяю двумерные массивы 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; }
}
ComboBox отображает «ThreatLevelName» и обновляет поле «ThreatLevel» в базе данных значением, предоставленным «ThreatLevelNumber».
<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 для" Image "не поддерживает преобразование из строки".
<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}" />