到目前为止,我有一个ObservableCollection<T>
对象。
我总是希望将最后插入的元素显示在TextBlock
中。我在XAML中实现了两个解决方案,但都没有工作:
<TextBlock Text="{Binding Path=entries.Last().message, FallbackValue=...}" />
<TextBlock Text="{Binding Path=entries[entries.Length-1].message, FallbackValue=...}" />
这个有效,但引用了第一个条目:
<TextBlock Text="{Binding Path=entries[0].message, FallbackValue=...}" />
我错过了什么吗?是否可以使用纯XAML?
答案 0 :(得分:3)
解决方案1:
您可以使用自定义转换器来实现此目的:
转换器类:
class LastItemConverter : IValueConverter
{
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
IEnumerable<object> items = value as IEnumerable<object>;
if (items != null)
{
return items.LastOrDefault();
}
else return Binding.DoNothing;
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new System.NotImplementedException();
}
}
Xaml:
<Application.Resources>
<local:LastItemConverter x:Key="LastItemConverter" />
</Application.Resources>
<TextBlock Text="{Binding Path=entries, Converter={StaticResource LastItemConverter}}" />
解决方案2:
另一种方法是在模型中创建一个返回条目的新属性:
public Object LastEntry => entries.LastOrDefault();
Xaml:
<TextBlock Text="{Binding Path=LastEntry, ... " />