Изменение значка AppBarButton

В моем универсальном приложении Windows 10 у меня есть AppBarButton на странице:

<AppBarButton x:Name="PinBtn" Icon="Pin" Click="PinBtn_Click"/>

Я хочу проверить, если Icon="Pin", то открепить его и наоборот.

Итак, я попытался закодировать так:

  private void PinBtn_Click(object sender,RoutedEventArgs e)
    {
        if(PinBtn.Icon == new SymbolIcon((Symbol.Pin)))
        {
            PinBtn.Icon = new SymbolIcon(Symbol.UnPin);
        }
        else {
            PinBtn.Icon = new SymbolIcon(Symbol.Pin);
        }
    }

Проблема: (PinBtn.Icon == new SymbolIcon((Symbol.UnPin))) всегда возвращает FALSE

В чем проблема и как ее исправить?


person Shahriar    schedule 10.08.2015    source источник


Ответы (1)


Это не сработает, потому что Icon — это ссылочный тип. Он никогда не будет равен новому экземпляру SymbolIcon.

Вместо этого вы должны использовать AppBarToggleButton и подписаться на события Checked и Unchecked.

<AppBarToggleButton x:Name="PinToggle" Icon="Pin" Checked="PinToggle_Checked" Unchecked="PinToggle_Unchecked" />

private void PinToggle_Checked(object sender, RoutedEventArgs e)
{
    PinToggle.Icon = new SymbolIcon(Symbol.UnPin);
}

private void PinToggle_Unchecked(object sender, RoutedEventArgs e)
{
    PinToggle.Icon = new SymbolIcon(Symbol.Pin);
}
person Justin XL    schedule 10.08.2015