【问题标题】:How to make Silverlight Dataform EditTemplate show controls based on checkbox state?如何使 Silverlight Dataform EditTemplate 基于复选框状态显示控件?
【发布时间】:2011-08-15 16:14:01
【问题描述】:

我想为此使用 XAML,并尽可能少地隐藏代码。我有一个带有自定义编辑模板的 DataForm,如下所示:


[ X ] 复选框 1

[控制面板]


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

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

谢谢

【问题讨论】:

    标签: c# .net silverlight xaml ria


    【解决方案1】:

    如果您熟悉 MVVM,您可以将 Grids 的 Visibility 绑定到 CheckBox.IsChecked 绑定到的相同属性(当然您必须使用正确的转换器)。

    【讨论】:

    【解决方案2】:

    只有 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 中执行所有操作。例如。

    查看此链接:Silverlight 4: how to switch control visibility

    【讨论】:

    • 有什么办法可以避免使用后面的代码吗?就像我可以在 Visibility 属性中使用 {Binding} 并让绑定引用复选框的 IsChecked 值一样吗?第二个面板的绑定返回值必须反转。
    • 是的,你可以。你需要写一个布尔可见性转换器
    猜你喜欢
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2017-11-13
    相关资源
    最近更新 更多