2016-10-21 4 views
0

BlendとWPFの新機能で、リストボックスのソートを持つコントロールを自分のカスタムアイテムとともに使用したいと考えています。基本的には、各アイテムは、ラベル付きの四角形に丸められています。私が思った最初の方法は、UserControlとStackPanelを使用することでしたが、プログラムにどのオブジェクトにフォーカスがあるかを伝える方法は考えられませんでした。この理由から、私はListBoxを使用してカスタムListBoxItemを作ることができると思っていましたが、明らかに四角形だけをコントロールに変換してラベルを失う可能性がありました。Blendでカスタムリストを作成する方法

答えて

0

ListBoxを使用することができ、ラベルではなく長方形だけに制限されません。

標準のListBoxを使用し、ListBox.ItemTemplateを任意の複雑なものにします。複数のコントロールを重ねて配置する必要がある場合は、CanvasコントロールまたはGridコントロールから開始し、そこから移動することができます。

また、アイテムテンプレートを単一のLabelコントロール(論理的にアイテムがラベルとして動作する場合)にするだけで、ControlTemplateを使用してこれらのラベル用にレンダリングされたビジュアルツリーを完全にやり直すことができます。

参考文献:

  1. ItemTemplate

  2. ControlTemplate

ここでは簡単な例です。

XAML:

<Grid> 
    <ListView ItemsSource="{Binding Path=Labels}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <Rectangle Fill="CadetBlue" RadiusX="10" RadiusY="10" SnapsToDevicePixels="True"> 
        </Rectangle> 
        <Label Content="{Binding}" Padding="10"/> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
</Grid> 

"ViewModelに":

public IEnumerable<string> Labels 
    { 
     get { return new string[] { "Foo", "Bar", "Baz" }; } 
    } 

そして結果:

Output

関連する問題