2011-04-22 58 views
1

我需要能夠通過點擊擴展器區域外的任何位置來摺疊擴展器。我想知道可以使用什麼技術。任何建議是高度讚賞。在Silverlight中如何以編程方式摺疊Expander?

擴展XAML - 集綁定爲isExpanded:

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

後面的代碼:

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

回答

2

我假設你正在使用後面的代碼。

能否請您試試這個膨脹機的鼠標離開&的MouseEnter處理程序

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; 
    } 
+0

謝謝你很多的代碼。現在好多了。但是,當我點擊原型中的其他項目時,它會崩潰擴展器。當我點擊擴展器之外的空白區域時,它沒有做任何事情。我不知道爲什麼。我想知道它是否可以修復。 – vladc77 2011-04-22 12:11:52

+0

我編輯了代碼,請讓我知道它是否有效。 :)另一個問題是,這是你點擊RootVisual的一部分的空白區域? – 2011-04-22 12:35:48

+0

不幸的是,新代碼的行爲沒有改變。空白區域是UserControl的Window區域。我在XAML中創建了所有設計。它回答你的問題嗎?有沒有辦法有一個方法是鼠標clikc發生不在擴展器然後擴展器會崩潰? – vladc77 2011-04-22 12:46:42

相關問題