1. 程式人生 > >WPF: WrapPanel 容器的資料繫結(動態生成控制元件、遍歷)

WPF: WrapPanel 容器的資料繫結(動態生成控制元件、遍歷)

問題:

       有一些CheckBox需要作為選項新增到頁面上,但是數目不定。而為了方便排版,我選擇用WrapPanel面板來作為父容器。那現在的問題就是如何把這些控制元件新增到這個WrapPanel裡了。我想到了兩個方法,第一個是先得到控制元件數目,然後再動態生成並載入到這個WrapPanel裡,第二個是設定資料繫結。我想第一個是可行的,但是專案中還涉及到其它問題,所以這裡就選擇第二個了。問題來了,在WrapPanel中並沒有可以用來設定繫結並實現動態生成的東西,那要怎麼解決了?

辦法:

新建一個ItemsControl控制元件,併為ItemsSource繫結資料來源,然後把ItemsControl.ItemsPanel設定為WrapPanel

,最後為ItemsControl.ItemTemplate中的CheckBox.Content繫結資料。

eg:

1、建立資料來源型別。

public class business 
 { 
    public string txt { get; set; } 
 }
 

2、設定資料來源

 public MainWindow()
  {
     this.InitializeComponent();
     List<business> che = new List<business>()
     {
        new business() { txt = "選項1"},
        new business() { txt = "選項2"},
        new business() { txt = "選項3"},
        new business() { txt = "選項4"},
        new business() { txt = "選項5"},
        new business() { txt = "選項6"},
        new business() { txt = "選項7"}				
     };
     ItemsControl.ItemsSource = che;
 }

3、Xaml中

<ItemsControl  x:Name="itemsControl"  Background="#B28BB2F1">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
          <WrapPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
          <Border Padding="3">
            <WrapPanel>
              <CheckBox  Content="{Binding txt}"/>
            </WrapPanel>
          </Border>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
除錯一下就OK了。

下一篇告訴你怎麼遍歷這個DataTemplate,並判斷哪些checkBox被選中了。