2

我有一个组合框,它显示数据库上的存储库列表,我拥有的唯一事件是 DropDownOpened 事件,在此期间我访问数据库以获取要显示的项目列表。

使用鼠标打开组合框并选择一个项目,一切都很好,但是当我使用触摸屏(在 Windows 8 或 Surface 上)时,就会出现问题。

我第一次打开组合框并选择一个没有问题,但在我选择了一个项目后,如果我再次尝试打开列表,应用程序就会崩溃。

这是组合框的 xaml:

    <ComboBox x:Name="RepositoryComboBox" Grid.Row="3" Grid.Column="1"  SelectedItem="{Binding SelectedRepository, Mode=TwoWay}" ItemsSource="{Binding RepositoryList, Mode=TwoWay}" 
                   Style="{StaticResource ComboBoxStyle}"  IsEnabled="True" DropDownOpened="ReposDrop"/>

以及下拉打开事件的代码:

    private async void ReposDrop(object sender, object e)
    {

        ViewModel.RepositoryList = null;
            try
            {
                await ViewModel.GetRepositories(); //accesses database through a WCF service
            }
            catch (Exception)
            {
                return;
            }

    }

关于可能导致此问题的任何想法?

编辑这是我得到的错误

    Exception   {"Error HRESULT E_FAIL has been returned from a call to a COM component."}
4

1 回答 1

1

您的ViewModel.GetRepositories()调用可能会更新后台线程上的列表内容。如果您不调用它,请检查它是否仍然崩溃。您也可以尝试延迟通话,例如,await Task.Delay(100)如果在ComboBox打开时不喜欢其内容更新。

于 2013-07-31T21:05:02.457 回答