2015-08-10 6 views
4

В моей Windows 10 универсального применения У меня есть AppBarButton на странице:Изменение 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

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

ответ

5

Это не сработает, потому что 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); 
}