带有圆角边框的Wpf自定义列表框

时间:2017-06-20 14:20:51

标签: c# wpf xaml wpf-style

我已经扩展了ListBox控件,并想给它圆角,所以我应用了如下的样式,它运行正常:

<control:MultiSelectionListBox SelectionMode="Extended" ItemsSource="{Binding Offerables,Mode=TwoWay}"
            SelectedItemsList="{Binding SelectedOfferables, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Name"
            Grid.Row="6" Grid.Column="0" MaxHeight="150">
    <control:MultiSelectionListBox.Resources>
        <Style TargetType="Border">
            <Setter Property="CornerRadius" Value="5"></Setter>
        </Style>
    </control:MultiSelectionListBox.Resources>
</control:MultiSelectionListBox>

但是我有太多的列表框,我不想单独在每个控件中添加样式。

我想在app.xaml中定义此样式,并希望按名称Style = "{StaticResource RoundedListBoxStyle}"重用该设计。

我在app.xaml中尝试过如下但没有运气

<Style TargetType="ListBox" x:Key="RoundedListBoxStyle">
    <Setter Property="Border"  Value="10"></Setter>
</Style>
  

成员Border无法识别或无法访问。

请指导我在这里做错了什么。

1 个答案:

答案 0 :(得分:1)

最后我设法做到了这一点,因为评论Border中提到的Bradley Uffner不是ListBox的属性,我们不能像这样使用它。我使用了Style.Resource并提到了Border for Border元素,如下所示:

<Style TargetType="ListBox" x:Key="RoundedListBoxStyle">
    <Style.Resources>
        <Style TargetType="Border">
            <Setter Property="CornerRadius" Value="5"></Setter>
        </Style>
    </Style.Resources>
</Style>

它有效。 :)