C# 如何使Silverlight Dataform EditTemplate基于复选框状态显示控件?

C# 如何使Silverlight Dataform EditTemplate基于复选框状态显示控件?,c#,.net,silverlight,xaml,ria,C#,.net,Silverlight,Xaml,Ria,我希望在尽可能少的代码落后的情况下使用XAML。我有一个带有自定义编辑模板的数据表单,如下所示: [X]复选框1 [控制面板] 如果选中复选框1,我想在“复选框1”控件(控制面板所在的位置)下方显示一组控件,如果未选中,我想显示另一组控件 我正在使用Silverlight 4(即将使用SL 5)。是否有Silverlight控制支架,允许我通过设置“ActivePanel”ID或其他方式“切换”哪个活动面板可见 谢谢只有两个独立的面板。例如 <Grid x:Name="OnGrid"

我希望在尽可能少的代码落后的情况下使用XAML。我有一个带有自定义编辑模板的数据表单,如下所示:


[X]复选框1

[控制面板]


如果选中复选框1,我想在“复选框1”控件(控制面板所在的位置)下方显示一组控件,如果未选中,我想显示另一组控件

我正在使用Silverlight 4(即将使用SL 5)。是否有Silverlight控制支架,允许我通过设置“ActivePanel”ID或其他方式“切换”哪个活动面板可见


谢谢

只有两个独立的面板。例如

<Grid x:Name="OnGrid" Visibility="Collapsed" />
<Grid x:Name="OffGrid" Visibility="Collapsed" />
<CheckBox Content="CheckBox" Unchecked="CheckBox_Unchecked" Checked="CheckBox_Checked"/>
或者,您可以使用转换器并在xaml中执行所有操作。例如


请参阅此链接:

如果您熟悉MVVM,您可以将网格的可见性绑定到与
复选框绑定到的相同属性。IsChecked
是绑定到的(当然您必须使用正确的转换器)。

是否有任何方法避免使用代码隐藏?我可以在可见性属性中使用{Binding}并让绑定引用复选框的IsChecked值吗?第二个面板的绑定返回值必须反转。可以。您需要编写booleantovisibility转换器I最终使用以下方法:
    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;
    }