当我的源只有整数月份值时,我的整数到月份转换器似乎可以很好地在组合框中显示月份名称。但是,我的程序使用来自 MVVMLight 的消息来交换内容,所以我没有那么多窗口。当我将内容切换到不同的内容时,为什么会调用 Convert 方法?通常,转换器获取一个整数并将其转换为字符串。但是在交换内容时,它会接收空字符串作为值,因此会产生 InvalidCastException。我该如何解决?我包含了一个严重简化的代码,它模拟这只是在按下按钮后设置 Content=null 。谢谢!项目源绑定到一个整数列表以表示月份。
基本上:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string answer = "";
switch ((int)value)
{
case 1:
{
answer = DatesInfo.Instance.MonthsNames[0];
break;
}
default:
{
break;
}
}
return answer;
}
XAML:
<ComboBox Width="200" Height="30" SelectedItem="{Binding SelectedItem.Month}"
ItemsSource="{Binding MonthsValues, Source={x:Static local:DatesInfo.Instance}}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource MonthNameConverter}}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>