C# 用银光显示内容

C# 用银光显示内容,c#,silverlight,C#,Silverlight,我有一个Silverlight 4应用程序。此应用程序有一个带有三个单选按钮的页面。默认情况下,这些单选按钮均未选中。但是,当用户选择其中一个单选按钮时,我希望通过向下滑动其余按钮来显示一些内容。例如: 选择1 选择2 选择3 用户单击选项1 选择1 我的内容出现在这里。项目2和3将向下滑动 选择2 选择3 如果用户单击选项2,它将如下所示: 选择1 选择2 我的内容出现在这里。项目3将向下滑动。项目1已折叠 选择3 有人知道我如何用Silverlight做到这一点吗?谢谢

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

  • 选择1
  • 选择2
  • 选择3
用户单击选项1

  • 选择1
    • 我的内容出现在这里。项目2和3将向下滑动
  • 选择2
  • 选择3
如果用户单击选项2,它将如下所示:

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

有人知道我如何用Silverlight做到这一点吗?谢谢

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

例如:

<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>

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

工具箱

手风琴控制视频教程

您的转换器仍然返回一个
bool
:您应该将其转换为
可见性
,而不是将其反转。我已更正了为转换器添加的“Nissan Fan”代码。在Silverlight 4中,绑定属性名称为“IsChecked”。
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();
        }
    }