我找不到一個窗口加載後可以調用的事件,並且我可以訪問ListView的ItemsSource。我唯一能想到的是ListView中的Loaded事件,但是當這個事件被觸發時,ItemsSource仍然爲空。當ListView的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添加到此窗口的ViewModel中的集合。我需要確切知道該自定義類中的ItemsSource中的內容。
那麼我怎麼能做到這一點?
在此先感謝!
你已經知道綁定的集合是ItemsSource,爲什麼你需要它在視圖中做某件事? –
我想要做的是自動生成基於綁定到ListView的集合的列...這就是爲什麼我要這樣做。我沒有很多DependencyProperties的經驗,這是第一個想法,這就是爲什麼我試圖找到調用的事件來查看集合中的字符串數組(通過ItemsSource),並添加一個GridView ListView的列。 – Miguel
嘗試覆蓋OnApplyTemplate,但爲什麼你需要在其他地方可能的解決方案? – sll