C# 绑定到最后一个数组元素

C# 绑定到最后一个数组元素,c#,arrays,wpf,xaml,data-binding,C#,Arrays,Wpf,Xaml,Data Binding,到目前为止,我有一个对象的可观察集合。 我总是想在文本块中显示最后插入的元素。我在XAML中实现了两个解决方案,但都不起作用: <TextBlock Text="{Binding Path=entries.Last().message, FallbackValue=...}" /> <TextBlock Text="{Binding Path=entries[entries.Length-1].message, FallbackValue=...}" /> 此选项

到目前为止,我有一个对象的
可观察集合
。 我总是想在
文本块中显示最后插入的元素。我在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吗?

解决方案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}}" />
<TextBlock Text="{Binding Path=LastEntry, ... " />


据我所知并非如此。可能的选项是在视图模型中使用转换器或返回最后一个元素的属性。如果是属性,则希望在
CollectionChanged
的情况下为所述属性发出更改通知。
<TextBlock Text="{Binding Path=LastEntry, ... " />