2017-06-20 153 views
0

我已经扩展ListBox控制,想给它的圆角,所以我已经应用的样式,如下,它工作正常:WPF自定义列表框带有圆角的边框

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

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

我想在app.xaml中定义这种风格,并希望像名称Style = "{StaticResource RoundedListBoxStyle}"那样重用该设计。

我在App.xaml中,但没有运气

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

Border无法识别或无法访问的成员试图像下面。

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

+0

'Border'不是'ListBox'的属性,所以不幸的是,这不起作用。它在你最初的'Style'中起作用的原因是它实际上是针对'ListBox'的可视化树中的'Border' *控件*(不是属性)。 –

+0

@BradleyUffner好的,那么我应该如何在app.xaml中定义相同的样式,以便我可以在其他Listbox上使用其他Key来重用它? –

+0

@BradleyUffner非常感谢您的评论。它帮助我找到正确答案,并发布了相同的答案。 :) –

回答

1

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

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

和它的工作。 :)