標籤:padding 資料繫結 add temp hang 一個 ffffff .net 容器
原文: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被選中了。
WPF: WrapPanel 容器的資料繫結(動態產生控制項、遍曆)