2017-06-20 151 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> 

和它的工作。 :)