C# Ошибка события ComboBox UWP VS2017: невозможно активировать приложение Windows store - PullRequest
1 голос
/ 10 июля 2020

Я попытался создать обработчик событий для поля со списком в приложении UWP, чтобы при изменении значения определенного элемента некоторые элементы управления в форме скрывались. Проблема в том, что когда я решаю начать без отладки, я получаю сообщение об ошибке: не удается активировать приложение Windows store. Теперь я не знаю, вызвано ли это кодом или чем-то еще. Когда я удаляю событие из кода, проблема исчезает, и если я удаляю только тело из обработчика событий, проблема остается, поэтому я почти уверен, что проблема не в теле.

Это 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), и попробовал множество решений, которые я нашел в inte rnet относительно этой проблемы. Пробуя решения в течение 10+ часов (я никогда не думал, что проблема в коде, так как все проблемы на inte rnet описывают это как проблему с отладчиком), я попытался прокомментировать последнюю часть, которую я закодировал, поскольку проблема возникла в в тот раз, а до этого не было. Это решило мою проблему, поэтому я определил ошибку обработчику событий.

1 Ответ

1 голос
/ 13 июля 2020

Проблема в том, что вы помещаете 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;
      
    }
}
...