4

我想将我的一些列表框项目设置为单选按钮。这是我拥有的代码,但这种风格适用于每个列表框项。

<Window.Resources>
    <Style TargetType="{x:Type ListBoxItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListBoxItem}">
                    <RadioButton Content="{TemplateBinding Content}"
                                 IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsSelected}"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

我怎样才能做某事,以便我可以指定一个列表框有单选按钮。我想这个名称会是这样的:

<ListBox Name="ListBox1" Width="120" Visibility="Visible" Background="{x:Null}" BorderThickness="0" Style="{StaticResource radioListBox}">

我知道部分问题是这只是样式列表框,但我不确定如何设置列表框本身的样式。我当然更喜欢添加背景和边框属性。

任何帮助,将不胜感激。

4

1 回答 1

9

你需要给你Style的钥匙:

<Window.Resources>
    <Style x:Key="radioListBoxItem" TargetType="{x:Type ListBoxItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListBoxItem}">
                    <RadioButton Content="{TemplateBinding Content}"
                                 IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsSelected}"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

然后你将它应用到一个ListBoxlike:

<ListBox ItemContainerStyle="{StaticResource radioListBoxItem}" />

如果您想为ListBox包含单选列表框项目和其他一些属性的 a 创建样式,您也可以这样做:

<Style x:Key="radioListBox" TargetType="{x:Type ListBox}">
    <Setter Property="ItemContainerStyle" Setter="{StaticResource radioListBoxItem}" />
    <Setter Property="Background" Value="Navy" />
</Style>

你会应用它:

<ListBox Style="{StaticResource radioListBox}" />
于 2013-06-28T15:56:11.270 回答