在 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 視圖正在崩潰。
uj5u.com熱心網友回復:
ItemsControl.AlternationIndex不是一個ListViewItem,而是一個int。
ListViewItem如果這是您的轉換器所期望的,請嘗試系結到自身:
DisplayMemberBinding="{Binding Path=.,
RelativeSource={RelativeSource AncestorType=ListViewItem},
Converter={StaticResource IndexConverter},
ConverterParameter=1}"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/447445.html
