我有一個簡單的轉換器,它檢查一個對象是否等於我傳遞它的任何參數。我的問題是轉換器參數總是作爲字符串傳遞並且值始終作爲對象傳遞。爲了正確地比較它們,我需要將該參數強制轉換爲與該值相同的類型。有沒有一種方法可以將一個對象的類型轉換爲另一個對象的類型,而無需事先知道任何類型?是否可以在不知道任何類型的情況下將一個對象轉換爲第二個對象的類型?
public class IsObjectEqualParameterConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null && parameter == null)
return true;
if (value == null)
return false;
// Incorrectly returns False when the ConverterParameter is an integer
// Would like to try and cast parameter into whatever type value before checking equality
// Something like: return value.Equals((parameter as value.GetType()));
return value.Equals(parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
而且使用例子會是這樣的:
<Button IsEnabled="{Binding Path=Index, ConverterParameter=0, Converter={StaticResource IsObjectEqualParameterConverter}}" />
如果'value'和'parameter'都是整數,那應該沒問題。你能舉出一個失敗的例子嗎? – 2010-11-19 20:08:16
ConverterParameters作爲字符串傳遞,所以當我輸入0時,它將它讀作「0」並返回false。 – Rachel 2010-11-19 20:15:37
正確 - 在問題中明確說明會很有幫助。 – 2010-11-19 20:17:51