使用Silverlight显示内容

时间:2011-04-13 20:34:27

标签: c# silverlight

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

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

用户点击选项1

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

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

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

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

2 个答案:

答案 0 :(得分:1)

您可以将所有元素都显示为可见,然后将Checked控件的RadioButton属性绑定到您希望能够隐藏/显示的部分的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();
        }
    }

答案 1 :(得分:1)

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

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

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