2011-11-01 25 views
-1

在我的應用程序2用戶組件的得到一個邊欄,其被保持此二組分:能見度在Silverlight

 <Grid x:Name="AF" Visibility="Visibility"> 
      <betata:AForm Height="508" VerticalAlignment="Top"/> 
     </Grid> 
     <Grid x:Name="AR" Visibility="Collapsed"> 
      <betata:AReg Height="508" VerticalAlignment="Top"/> 
     </Grid> 
在可保存格式

得到了與該方法的超鏈接按鈕:

private void HyperlinkButton_Click(object sender, RoutedEventArgs e) 
    { 
     betata.Views.Sidebar.Sidebar sd = new Sidebar(); 
     sd.showAR(this); 
    } 

回我的側邊欄代碼有另一種方法稱爲showAR與這些功能:

public void showAR(AForm aForm) 
    { 
     this.AR.Visibility = Visibility.Visible; 
     aForm.Visibility = Visibility.Collapsed; 
    } 

但我不知道爲什麼aForm將崩潰,但AR無法顯示。

+0

可能的[用戶控制可見性](http://stackoverflow.com/questions/7983939/visibility-of-user-control) –

+0

的重複,因爲之前它無法解決,最後我在最後找到了解決方案。但我沒有刪除,因爲我想保持參考從@Aligned – 1myb

回答

1

問題已經在這篇文章中回答了。通過隧道和冒泡可以解決Visibility of User Control。這是Silverlight的新路由事件功能

1

我會重構這一點,使其更簡單(這可能有助於解決您的問題)。

<Grid> 
    <betat:AForm x:Name="aForm" Height="508" VerticalAlignment="Top" Visibility="Visible" /> 
    <betata:AReg x:Name="aReg" Height="508" VerticalAlignment="Top" Visibility="Collapsed" /> 
</Grid> 

public void showAR() // this is in the code behind (xaml.cs) of the Sidebar UserControl 
{ 
     this.aReg.Visibility = Visibility.Visible; 
     this.aForm.Visibility = Visibility.Collapsed; 
} 

,或者你甚至都不需要ShowAR(),可以只設置在點擊按鈕的知名度,除非你打算重用在其他places.Example功能:

private void HyperlinkButton_Click(object sender, RoutedEventArgs e) 
{ 
     betata.Views.Sidebar.Sidebar sd = new Sidebar(); 
     sd.aReg.Visibility = Visibility.Visible; 
     sd.aForm.Visibility = Visibility.Collapsed; 
} 
+0

我試過@。@它不工作...我的意思是當我點擊超鏈接按鈕沒有迴應 – 1myb

+0

似乎點擊事件沒有連線...你的按鈕看起來像這樣:? – Aligned

+0

它得到:: 1myb