2011-04-29 84 views
0

我想用盡可能少的代碼隱藏功能來使用XAML。我有一個自定義編輯模板看起來像這樣的數據形:如何使Silverlight Dataform EditTemplate顯示基於複選框狀態的控件?


[X]複選框1

[控制面板]


我要顯示一組下方的控制「複選框1」控件(控制面板所在的位置)IF複選框1已選中,如果未選中,我想顯示一組不同的控件。

我正在使用Silverlight 4(即將使用SL 5)。有沒有一個Silverlight控制檯,讓我通過設置「ActivePanel」ID或者什麼來「切換」哪個活動面板可見?

謝謝

回答

0

您可以在網格的只是綁定能見度到CheckBox.IsChecked被綁定到(當然你必須使用正確的轉換器)相同的特性:

請參閱此鏈接。

+0

我最終使用這種方法:http://www.rhyous.com/2011/02/22/binding-visibility-to-a-bool-value-in-wpf/ – 2011-05-02 22:54:57

0

只有2個獨立的面板。例如。

<Grid x:Name="OnGrid" Visibility="Collapsed" /> 
<Grid x:Name="OffGrid" Visibility="Collapsed" /> 
<CheckBox Content="CheckBox" Unchecked="CheckBox_Unchecked" Checked="CheckBox_Checked"/> 

設置未經檢查和檢查的代碼隱藏事件中每個事件的可見性。

private void CheckBox_Unchecked(object sender, System.Windows.RoutedEventArgs e) 
    { 
     OffGrid.Visibility = Visibility.Visible; 
     OnGrid.Visibility = Visibility.Collapsed; 
    } 

    private void CheckBox_Checked(object sender, System.Windows.RoutedEventArgs e) 
    { 
     OffGrid.Visibility = Visibility.Collapsed; 
     OnGrid.Visibility = Visibility.Visible; 
    } 

或者,您可以使用轉換器並在xaml中執行所有操作。例如。如果您熟悉MVVM Silverlight 4: how to switch control visibility

+0

有什麼辦法可以避免使用代碼?就像我可以在Visibility屬性中使用{Binding}並讓綁定引用複選框的IsChecked值?對於第二個面板,綁定返回值必須顛倒過來。 – 2011-04-29 18:03:22

+0

是的,你可以。你需要寫一個booleantovisibility轉換器 – 2011-04-29 18:45:35

相關問題