2015-09-19 100 views
0

我有一個組合框綁定到查看模型列表屬性。此列表屬性然後調用數據層中的異步函數。WpfCombo box itemsource綁定回調

我想將組合框的選定索引屬性設置爲「零」I.e selected index = 0;

真實場景是數據完美加載,但即使設置了選定的索引屬性,它也不會在異步調用後應用。
請讓我知道財產保稅後的任何回調方法。

+0

請讓我們知道你到目前爲止已經嘗試過 – Rohit

+0

我試過在itemsource中的IsAsync = true屬性。但它在某個時間工作,但並非總是如此。 – user2478122

回答

0

我已經作出了示例應用程序

視圖模型

class MainWindowViewModel : INotifyPropertyChanged 
{ 

    public event PropertyChangedEventHandler PropertyChanged; 

    private ObservableCollection<string> _source; 
    private object _lock = new object(); 

    public IEnumerable<string> Source 
    { 
     get { return _source; } 
    } 

    public String SelectedItem { get; set; } 
    public int SelectedIndex { get; set; } 

    public MainWindowViewModel() 
    { 
     _source = new ObservableCollection<string>(); 
     BindingOperations.EnableCollectionSynchronization(_source, _lock); 

     Task.Factory.StartNew(() => PopulateSourceAsunc()); 
    } 

    private void PopulateSourceAsunc() 
    { 
     for (int i = 0; i < 10; i++) 
     { 
      _source.Add("Test " + i.ToString()); 
      Thread.Sleep(1000); 
     } 
     //SelectedItem = _source[6]; 
     SelectedIndex = 5; 
     OnPropertyChanged("SelectedIndex"); 
    } 

    [NotifyPropertyChangedInvocator] 
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 

的Xaml

<StackPanel> 
    <ComboBox ItemsSource="{Binding Source}" 
       SelectedItem="{Binding SelectedItem}" 
       SelectedIndex="{Binding SelectedIndex}"> 
     <ComboBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <VirtualizingStackPanel/> 
      </ItemsPanelTemplate> 
     </ComboBox.ItemsPanel> 
    </ComboBox> 
</StackPanel> 

代碼後面

public MainWindow() 
    { 
     InitializeComponent(); 
     this.DataContext = new MainWindowViewModel(); 
    } 

BindingOperations類是在0命名空間

+0

非常感謝Sandesh。另外爲什麼我們使用?沒有這也是它的工作。 – user2478122

+0

是的,它會工作。對於如此小的物品清單,這並沒有什麼不同。當您的組合框中有數百個項目時,它將大大提高性能 – Sandesh

相關問題