wpf radiobuttonlist实现

1、创建类:MulitBooleanConverter

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Data;

namespace ScreenLock
{
    class MulitBooleanConverter : IValueConverter
    {
        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            int serviceParameter = int.Parse(parameter.ToString());
            bool isOnservice = (bool)value;
            bool result = false;
            switch (serviceParameter)
            {
                case 0:
                    result = true && isOnservice;
                    break;
                case 1:

                    result = !isOnservice;
                    break;

            }
            return result;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            int serviceParameter = int.Parse(parameter.ToString());
            bool isOnservice = (bool)value;
            bool result = false;
            switch (serviceParameter)
            {
                case 0:
                    result = true && isOnservice;
                    break;
                case 1:
                    result = false && isOnservice;
                    break;

            }
            return value;
        }
        #endregion

    }
}

2、界面RadioButton

<Window x:Class="ScreenLock.RadioButton"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="RadioButton" Height="300" Width="300"
        xmlns:local="clr-namespace:ScreenLock"
        >
    <Window.Resources>
        <local:MulitBooleanConverter x:Key="boolConverter"></local:MulitBooleanConverter>
        <Style x:Key="HorizontalRadioButtonListStyle" TargetType="ListBox">
            <Style.Resources>
                <Style TargetType="ListBoxItem">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="ListBoxItem">
                                <Grid Margin="2">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition />
                                    </Grid.ColumnDefinitions>
                                    <RadioButton IsChecked="{Binding IsSelected,  
                                RelativeSource={RelativeSource TemplatedParent},  
                                Mode=TwoWay}" />
                                    <ContentPresenter Grid.Column="1" Margin="2,0,0,0" />
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Style.Resources>
            <Setter Property="ItemsPanel">
                <Setter.Value>
                    <ItemsPanelTemplate>
                        <WrapPanel Orientation="Horizontal"  />
                    </ItemsPanelTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="BorderThickness" Value="0" />
            <Setter Property="Background" Value="Transparent" />
        </Style>
    </Window.Resources>
    <Grid>
        <ListBox Style="{StaticResource HorizontalRadioButtonListStyle}" x:Name="list1" SelectionChanged="list1_SelectionChanged">
            <ListBox.Items>
                <ListBoxItem  IsSelected="{Binding xxx,Converter={StaticResource boolConverter},ConverterParameter=0}" Content="在线" ></ListBoxItem>
                <ListBoxItem IsSelected="{Binding xxx,Converter={StaticResource boolConverter},ConverterParameter=1}" Content="离线"></ListBoxItem>
                <ListBoxItem IsSelected="{Binding xxx,Converter={StaticResource boolConverter},ConverterParameter=0}" Content="离线llll"></ListBoxItem>
            </ListBox.Items>
        </ListBox>
    </Grid>
</Window>

3、后台选中事件

  private void list1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            MessageBox.Show(((ListBoxItem)list1.SelectedItem).Content.ToString());
        }
展开阅读全文

没有更多推荐了,返回首页