WP7 ApplicationBarIcon Visibility - PullRequest
       12

WP7 ApplicationBarIcon Visibility

3 голосов
/ 15 июля 2011

Примите во внимание, что WP7 ApplicationBarIcon не является стандартным элементом управления как таковым.

Мне нужно иметь возможность скрыть это программно (мне нужно скрывать, а не отключать)

1 / есть ли другой способ сделать это, кроме добавления / удаления значка

2 / при условии, что мне нужно добавить и удалить его, как мне связать событие с элементом управления, который я добавляю?

  • спасибо

Ответы [ 2 ]

4 голосов
/ 15 июля 2011

Показано следующее: создание панели приложения в коде;добавление к ней кнопки (включая обработчик события «щелчок»);и удаление определенной кнопки.

    this.ApplicationBar = new ApplicationBar();

    var newButton = new ApplicationBarIconButton();
    newButton.IconUri = new Uri("/images/remove.png", UriKind.Relative);
    newButton.Text = "remove";
    newButton.Click += RemoveAppBarButton;

    this.ApplicationBar.Buttons.Add(newButton);


void RemoveAppBarButton(object sender, EventArgs e)
{
    for (var i = 0; i < this.ApplicationBar.Buttons.Count; i++)
    {
        var button = this.ApplicationBar.Buttons[i] as ApplicationBarIconButton;

        if (button != null)
        {
            if (button.Text == "remove")
            {
                this.ApplicationBar.Buttons.RemoveAt(i);
                break;
            }
        }
    }
}

Важно отметить, что вы не можете ссылаться на кнопки (или пункты меню) по имени.

1 голос
/ 15 июля 2011

1) ApplicationBarIcons не поддерживают какое-либо свойство Visibility. Единственное, что вы можете сделать, это удалить и добавить их. Другое решение состоит в том, чтобы отключить их, потому что это приводит к более согласованному пользовательскому интерфейсу. В случае, если вы показываете 4 иконки и удаляете 2 из них, иконки были выровнены, и иконки теперь находятся в местах, где были другие кнопки. Это может сбить пользователя с толку, поскольку он нажимал на вторую кнопку справа, которая теперь выполняет другую операцию.

2) Когда мне пришлось столкнуться с этой проблемой, я создал класс управления, содержащий все нужные мне значки. При удалении иконки я просто удалил ее из панели приложений, но оставил в своем классе. Позже я мог бы добавить иконку обратно в ApplicationBar, используя точно такой же экземпляр, как и прежде, со всеми существующими событиями, прикрепленными к нему.

ApplicationBar - это одна вещь в Windows Phone 7, которая разочаровывает меня по сравнению с хорошей общей структурой.

Надеюсь, это поможет ...

...