gpt4 book ai didi

c# - 当 ListView 的 ItemsSource 改变时触发事件

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:32 26 4
gpt4 key购买 nike

我找不到可以在加载窗口后调用的事件,也找不到可以访问 ListView 的 ItemsSource 的位置。我唯一能想到的是 ListView 中的 Loaded 事件,但是当触发此事件时,ItemsSource 保持为空。

我可能需要另一个事件,这样我才能知道 ItemsSource 中有什么。

因此,通过代码,我可能会更好地揭示我正在尝试做的事情:

在自定义类中:

public class GridViewSomething
{
public static readonly DependencyProperty TestProperty =
DependencyProperty.RegisterAttached("Test",
typeof(bool),
typeof(GridViewSomething),
new UIPropertyMetadata(OnTestChanged));

public static bool GetTest(DependencyObject obj)
{
return (bool)obj.GetValue(TestProperty);
}

public static void SetTest(DependencyObject obj, bool value)
{
obj.SetValue(TestProperty, value);
}

static void OnTestChanged(object sender, DependencyPropertyChangedEventArgs e)
{
ListView listView = sender as ListView;

if (!(bool)e.OldValue && (bool)e.NewValue)
listView.AddHandler(ListView.LoadedEvent, new RoutedEventHandler(ListView_Loaded));
else if (!(bool)e.NewValue && (bool)e.OldValue)
listView.RemoveHandler(ListView.LoadedEvent, new RoutedEventHandler(ListView_Loaded);
}

static void ListView_Loaded(object sender, RoutedEventArgs e)
{
ListView listView = sender as ListView;

if (listView.ItemsSource != null)
{
//Do some work
}
}
}

和 ListView:

(...)

<ListView ItemsSource="{Binding Students}"
test:GridViewSomething.Test="True">

(...)

我正在将 ListView 绑定(bind)到此窗口的 ViewModel 中的集合。我需要确切地知道该自定义类中的 ItemsSource 中有什么。

那么我该如何实现呢?

提前致谢!

最佳答案

您可以使用描述符 as shown here 订阅 ItemsSource 属性的更改。 .如果检查该处理程序中的值,它不应为 null(除非绑定(bind)属性实际上设置为 null)。

关于c# - 当 ListView 的 ItemsSource 改变时触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8289494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com