2011-04-29 57 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

相关问题