【问题标题】:Revealing Content with Silverlight使用 Silverlight 揭示内容
【发布时间】:2011-04-14 18:56:30
【问题描述】:

我有一个 Silverlight 4 应用程序。这个应用程序有一个页面,上面有三个单选按钮。默认情况下,这些单选按钮均未选中。但是,当用户选择其中一个单选按钮时,我想通过向下滑动其余按钮来显示一些内容。例如:

  • 选项 1
  • 选项 2
  • 选项 3

用户点击选项 1

  • 选项 1
    • 我的内容出现在这里。第 2 项和第 3 项将向下滑动。
  • 选项 2
  • 选项 3

如果用户点击选项 2,它将如下所示:

  • 选项 1
  • 选项 2
    • 我的内容出现在这里。第 3 项将下滑。第 1 项已折叠。
  • 选项 3

有谁知道我如何使用 Silverlight 做到这一点?谢谢!

【问题讨论】:

    标签: c# silverlight


    【解决方案1】:

    您可以将所有元素设为可见,然后将RadioButton 控件的Checked 属性绑定到您希望能够隐藏/显示的部分的Visibility 属性,并使用 值转换器 将 Checked (bool) 转换为 Visibility。

    示例:

    <StackPanel>
        <RadioButton Name="r1" Content="Radio1" GroupName="group1"/>
        <Grid Visibility="{Binding Checked, ElementName=r1, Converter={StaticResource boolToVisibilityConverter}">
            <TextBlock Text="Hidden until Radio1 is checked"/>
        </Grid>
        <RadioButton Content="Radio2" GroupName="group1"/>
        <RadioButton Content="Radio2" GroupName="group1"/>
    </StackPanel>
    

    这是一个 boolToVisibilityConverter:

    public class boolToVisibilityConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                if(!(value is bool))
                   throw new Exception("invalid type");
                return ((bool)value)? Visibility.Visible: Visibility.Collapsed;
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                // Most of the time you are not handling bi-directional converts, but you need
                // to implement the contract of IValueCoverter fully regardless.
                throw new NotImplementedException();
            }
        }
    

    【讨论】:

    • 您的转换器仍然返回bool:您应该将其转换为Visibility,而不是反转它。
    • 我已经更正了“Nissan Fan”为转换器添加的代码。
    • 在 Silverlight 4 中,绑定属性名称为“IsChecked”。
    【解决方案2】:

    如果您安装了 Silverlight 工具包,您将可以访问一个名为 Accordion 的控件。它完全符合您的要求。 :)

    工具包 http://silverlight.codeplex.com/

    手风琴控制视频教程 http://www.silverlight.net/learn/videos/all/silverlight-toolkit-accordion-control/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多