Как программно свернуть Expander в Silverlight? - PullRequest
1 голос
/ 22 апреля 2011

Мне нужно иметь возможность свернуть расширитель при нажатии в любом месте за пределами области расширителя.Мне интересно, какую технику можно использовать.Любые советы приветствуются.

Расширитель XAML - установить привязку к isExpanded:

 <toolkit:Expander Header="Tasks" IsExpanded="{Binding IsExpanded}">

Код позади:

    public bool IsExpanded
    {
        get { return _isExpanded; }
        set
        {
            if (value == _isExpanded)
                return;
            _isExpanded = value;
            OnPropertyChanged("IsExpanded");
        }
    }

1 Ответ

2 голосов
/ 22 апреля 2011

Я предполагаю, что вы используете код позади.

Можете ли вы попробовать это в обработчиках MouseLeave и MouseEnter в Expander

    private void expander1_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
    {   
        Application.Current.RootVisual.MouseLeftButtonDown += RootVisual_MouseLeftButtonDown;
    }

    void RootVisual_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        this.expander1.IsExpanded = false;
    }

    private void expander1_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
    {
        Application.Current.RootVisual.MouseLeftButtonDown -= RootVisual_MouseLeftButtonDown;
    }
...