WPF 转换器:无法转换“System.Int32”类型的对象;输入“System.Windows.Controls.ListViewItem”
在 GridViewColumn 中,我有以下转换器:
<GridViewColumn Header="Number"
DisplayMemberBinding="{Binding (ItemsControl.AlternationIndex),
RelativeSource={RelativeSource AncestorType=ListViewItem},
Converter={StaticResource IndexConverter},
ConverterParameter=1}"/>
此列是从 1 开始的自动增量索引,转换器是:
public class IndexConverter : IValueConverter
{
public object Convert(object value, Type TargetType, object parameter, CultureInfo culture)
{
ListViewItem item = (ListViewItem) value;
ListView listView = ItemsControl.ItemsControlFromItemContainer(item) as ListView;
int index = listView.ItemContainerGenerator.IndexFromContainer(item);
if (Int32.TryParse(parameter as string, out int paramValue))
{
index += paramValue;
}
return index.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
我收到以下编译错误:
无法将“System.Int32”类型的对象转换为类型 'System.Windows.Controls.ListViewItem'
因此 xaml 视图崩溃。
In a GridViewColumn I have below converter:
<GridViewColumn Header="Number"
DisplayMemberBinding="{Binding (ItemsControl.AlternationIndex),
RelativeSource={RelativeSource AncestorType=ListViewItem},
Converter={StaticResource IndexConverter},
ConverterParameter=1}"/>
This column is an auto-incremental index starting from 1 and the converter is:
public class IndexConverter : IValueConverter
{
public object Convert(object value, Type TargetType, object parameter, CultureInfo culture)
{
ListViewItem item = (ListViewItem) value;
ListView listView = ItemsControl.ItemsControlFromItemContainer(item) as ListView;
int index = listView.ItemContainerGenerator.IndexFromContainer(item);
if (Int32.TryParse(parameter as string, out int paramValue))
{
index += paramValue;
}
return index.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
I am getting below compilation error:
Unable to cast object of type 'System.Int32' to type
'System.Windows.Controls.ListViewItem'
So xaml view is crashing.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
ItemsControl.AlternationIndex
不是ListViewItem
而是int
。如果您的转换器需要的话,请尝试绑定到
ListViewItem
本身:ItemsControl.AlternationIndex
is not aListViewItem
but anint
.Try to bind to the
ListViewItem
itself if that's what your converter expects: