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

が、私はあまりにも多くのリストボックスを持っていると私は「ドン個々のコントロールごとにスタイルを追加したかったのです。

このスタイルを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' * control *(プロパティではない)を実際にターゲットにしているからです。 –

+0

@BradleyUffnerだから、他のリストボックスの他のキーと再利用できるように、app.xamlで同じスタイルをどのように定義する必要がありますか? –

+0

@BradleyUffnerご意見ありがとうございました。それは正しい答えを見つけるのを助け、私は同じことを投稿した。 :) –

答えて

1

最後に私はBorderのコメントに記載されているBradley UffnerListBoxのプロパティではないので、そのようなスタイルでは使用できません。私はStyle.Resourceを使用し、以下のようにボーダー要素のスタイルを述べた:

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

、それが働きました。 :)

関連する問題