work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

WPF 怎样实现单选列表控件?

Posted on 2011-11-14 15:45  work hard work smart  阅读(3847)  评论(0编辑  收藏  举报

WPF没有像ASP.NET提供一个RadioButtonList的控件。幸运的是,我们可以利用WPF样式和模板的强大功能,用纯粹的XAML代码实现这个功能

<Window x:Class="ControlTest2.ListBoxTest2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:s="clr-namespace:System;assembly=mscorlib">
    <Window.Resources>
        <x:Array Type="{x:Type s:String}" x:Key="data">
            <s:String>Option1</s:String>
            <s:String>Option2</s:String>
            <s:String>Option3</s:String>
        </x:Array>
    </Window.Resources>
    <StackPanel DataContext="{StaticResource data}">
      <TextBlock Margin="5">
       <TextBlock Text="Current Option:"/>
       <TextBlock Text="{Binding /}"/>
    </TextBlock>
      <ListBox
       ItemsSource="{Binding}"
       IsSynchronizedWithCurrentItem="True"
       Width="240"
       Height="60"
       HorizontalAlignment="Left">
            <ListBox.ItemContainerStyle>
                <Style TargetType="{x:Type ListBoxItem}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ListBoxItem}">
                                <RadioButton
                                    IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource TemplatedParent}}"
                                    Content="{TemplateBinding Content}"/>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListBox.ItemContainerStyle>
        </ListBox>
        <!--这种方法跟简单-->
         <StackPanel>
            <RadioButton GroupName="x">Radio1</RadioButton>
           <RadioButton GroupName="x">Radio2</RadioButton>
           <RadioButton GroupName="x">Radio3</RadioButton>
        </StackPanel>
    </StackPanel>   
</Window> 

  参考:http://social.msdn.microsoft.com/Forums/zh-CN/wpfzhchs/thread/857fdaa9-5c67-4e0a-a1fd-037f72577c76