Хорошо, вот сделка. У меня есть CollectionViewSource:WPF ComboBox Binding с конвертером
<CollectionViewSource x:Key="PA_System_AppStatus">
<CollectionViewSource.Source>
<SystemCols:ArrayList>
<ComboBoxItem Content="Active" />
<ComboBoxItem Content="Denied" />
<ComboBoxItem Content="Granted" />
</SystemCols:ArrayList>
</CollectionViewSource.Source>
</CollectionViewSource>
У меня также есть ComboBox, что связанный с:
<ComboBox x:Name="Perro" Tag="Application"
SelectedValue="{Binding Path=[AppStatus], Converter={StaticResource AppStatusConverter}}"
ItemsSource="{Binding Source={StaticResource PA_System_AppStatus2}}"/>
AppStatus представляет собой символ в DataRow, который может быть A, D, G. Поэтому я хочу, чтобы ComboBox отображал весь ComboBoxItem выше, но под хранилищем капюшона в поле char. Для этого я написал этот конвертер:
public class AppStatusConverter : IValueConverter
{
public object Convert(
object value,
System.Type targetType,
object parameter,
System.Globalization.CultureInfo culture
)
{
string returnValue = null;
if (value != System.DBNull.Value && value != null)
{
if ((string)value == "A")
returnValue = "Active";
else if ((string)value == "D")
returnValue = "Denied";
else if ((string)value == "G")
returnValue = "Granted";
else
returnValue = null;
}
return returnValue;
}
public object ConvertBack(
object value,
System.Type targetType,
object parameter,
System.Globalization.CultureInfo culture
)
{
string returnValue = null;
string tempvalue = ((ComboBoxItem)value).Content.ToString();
if (tempvalue == "Active")
returnValue = "A";
else if (tempvalue == "Denied")
returnValue = "D";
else if (tempvalue == "Granted")
returnValue = "G";
else
returnValue = null;
return returnValue;
}
}
ConvertBack часть работает отлично, и всякий раз, когда я выбираю значение, то DataRow заполняется одним из символов (A, D или G).
Однако Convert не делает. Например, я загружаю DataRow из БД. Затем конвертер правильно берет значение внутри столбца «AppStatus» и пытается его преобразовать, чтобы выбрать один из элементов ComboBox и назначить SelectedValue. Однако ничего не происходит.
Только что проверили ваше решение и обработали perfe кт. Благодаря! – argledhel