5

在我的 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

有什么问题并解决它?

4

1 回答 1

6

它不会起作用,因为Icon它是一个引用类型。它永远不会等于 的新实例SymbolIcon

在这种情况下,您应该使用 aAppBarToggleButton并订阅CheckedandUnchecked事件。

<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);
}
于 2015-08-10T23:01:43.273 回答