首页 > 解决方案 > C# UWP VS2017 ComboBox 事件错误:无法激活 Windows 商店应用程序

问题描述

我试图为 UWP 应用程序中的组合框创建一个事件处理程序,当我将值更改为某个项目时,表单上的某些控件会被隐藏。问题是,当我选择在不调试的情况下启动时出现错误:无法激活 Windows 商店应用程序。现在我不知道这是由代码还是由其他原因引起的。当我从代码中删除事件时,问题就消失了,如果我只从事件处理程序中删除主体,问题仍然存在,所以我相当确定问题不在主体中。

这是 C# + XAML 代码:

private void RoleComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (roleComboBox.SelectionBoxItem.ToString() == "Coach")
        {
            positionTextBlock.Visibility = Visibility.Collapsed;
            positionComboBox.Visibility = Visibility.Collapsed;
        }
    }

<ComboBox x:Name="roleComboBox" HorizontalAlignment="Left" Margin="200,84,0,0" VerticalAlignment="Top" Width="140" SelectionChanged="RoleComboBox_SelectionChanged">
        <ComboBoxItem IsSelected="True">-Choose a role-</ComboBoxItem>
        <ComboBoxItem>Player</ComboBoxItem>
        <ComboBoxItem>Coach</ComboBoxItem>
        <ComboBoxItem>Trainer</ComboBoxItem>
    </ComboBox>

我首先认为问题出在 VS2017 的某个地方(也在 2019 年尝试过),并尝试了很多我在互联网上找到的关于这个问题的解决方案。在尝试了 10 多个小时的解决方案后(我从没想过问题出在代码中,因为互联网上的所有问题都将其描述为调试器的问题)我试图评论我编码的最后一部分,因为当时出现了问题并且在那之前不在那里。这解决了我的问题,所以我将错误定位到事件处理程序。

标签: c#uwpvisual-studio-2017

解决方案


问题是您放置ComboBoxItem在 中ComboBox,所以选择的项目类型是ComboBoxItem,我们需要将其转换为 ComboBoxItem 然后获取Content如下属性。

private void RoleComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var item = roleComboBox.SelectedItem as ComboBoxItem;
    var value = item.Content;
    if ((roleComboBox.SelectedItem as ComboBoxItem).Content.ToString() == "Coach")
    {
        positionTextBlock.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
      
    }
}

推荐阅读