2011-11-02 26 views
0

在我的應用程序有一個側邊欄,其中持此雙組份:能見度用戶控制的

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

了超鏈接按鈕,用這種方法:

private void HyperlinkButton_Click(object sender, RoutedEventArgs e) 
    { 
     Visibility = Visibility.Collapsed; 
     Sidebar sb = new Sidebar(); 
     sb.AN.Visibility = Visibility.Visible; 
    } 

,但我不知道爲什麼aForm將會崩潰,但AN無法顯示。或是否有任何其他的解決方案來實現::

這條線在主頁調UC_A ::

<DWDS_LULCS_Views_Sidebar:Sidebar HorizontalAlignment="Left" Width="264"/> 
  • 主 頁保持
  • 用戶控制A(側欄) 保持
  • 用戶控制B(管理登錄表單) 和
  • 用戶控制C(管理導航菜單)

UC_B默認是可見的,點擊UC_B中的按鈕調用UC_A的UC_C將可見性變爲可見?

+0

這整件事很混亂......首先,可見性=「可見性」是錯誤的,另外,爲什麼你這樣做? Sidebar sb = new Sidebar(); –

回答

1

最後,這個問題正在解決......我這樣做,讓全局變量中的東西來驗證是否使哪些可見和崩潰,然後給sidebar(layout_updated)一個事件處理程序。當我修改UC_B的可見性時,UC_A將受到影響,觸發器將被調用。最後,UC_A的layout_updated事件將改變UC_C的可見性變爲可見。

1

我做這種方式,使全局變量的東西是否驗證這使可見和坍塌,

另一種方法是使用MVVM方法

<Border Background="Red" Visibility="{Binding HasChanges, Converter={StaticResource visibilityConverter}, FallbackValue=Collapsed}"> 

在你您需要添加的資源

<local:BooleanToVisibilityConverter x:Key="visibilityConverter" OnTrue="Visible" OnFalse="Collapsed" /> 

然後您可以擁有全局o當你的控件的構造函數在 InitializeComponent();
DataContext = new GlobalObjectKnownAsViewModel(); //是綁定的來源

這種方法將是一個很好的第一個開始,稍後您可以考慮使用PRISM/mvvm light來爲mvvm工作提供額外的行爲和基礎設施。