2011-11-27 162 views
2

我找不到一個窗口加載後可以調用的事件,並且我可以訪問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中的內容。

那麼我怎麼能做到這一點?

在此先感謝!

+0

你已經知道綁定的集合是ItemsSource,爲什麼你需要它在視圖中做某件事? –

+0

我想要做的是自動生成基於綁定到ListView的集合的列...這就是爲什麼我要這樣做。我沒有很多DependencyProperties的經驗,這是第一個想法,這就是爲什麼我試圖找到調用的事件來查看集合中的字符串數組(通過ItemsSource),並添加一個GridView ListView的列。 – Miguel

+0

嘗試覆蓋OnApplyTemplate,但爲什麼你需要在其他地方可能的解決方案? – sll

回答

2

通過使用描述符as shown here,您可以對ItemsSource屬性進行修改。如果檢查該處理程序中的值,它不應該爲空(除非綁定的屬性實際上設置爲空)。

+0

你的意思是DependencyPropertyDescriptor?我現在有點困惑,它是如何工作的以及它應該在哪裏應用? – Miguel

+0

@Miguel:例如,您可以在窗口的構造函數中訂閱,或者在ListView的加載事件中進行訂閱。 –

+0

它工作。謝謝!我最近剛開始使用DependencyProperties,所以我沒有任何使用它們的經驗,或者知道我們需要做什麼,但是它們非常有用和有用。 – Miguel

相關問題