2013-07-09 43 views
5

我有一個WPF WrapPanel,它包含一些Buttons,我想在運行時重新安排它們。在設計時的XAML代碼如下:在運行時重新安排WrapPanel中的控件

<Grid x:Name="LayoutRoot"> 
    <WrapPanel Margin="133,127,216,189" Background="#FF979797"> 
     <Button Content="Button" Width="75"/> 
     <Button Content="Button" Width="75"/> 
     <Button Content="Button" Width="75"/> 
     <Button Content="Button" Width="75"/> 
     <Button Content="Button" Width="75"/> 
     <Button Content="Button" Width="75"/> 
    </WrapPanel> 
</Grid> 

但是,我想重新在運行時安排Buttons。你能幫我解答嗎?

回答

0

如果您想在運行時重新排列子項,您有兩種選擇:創建(或至少操縱)代碼中的WrapPannel的子項而不是XAML或setting up Triggers(在Style標籤中)來操作按鈕如所須。

Here's一個例子。

3

你可以做這樣的事情:

<ItemsControl ItemsSource="{Binding Items}"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel /> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Button Content="{Binding}" Width="75"/> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

項目將是對您的DataContext一個屬性,通常是某種一個ObservableCollection。在最簡單的情況下,它可能是與按鈕標題相對應的字符串集合。重新排列ObservableCollection元素時,它將重新排列ItemsControl中的相應按鈕,使用WrapPanel排列它們。


在一個側面說明,使用這種類型的方法是向所謂的MVVM模式的步驟(模型 - 視圖 - 視圖模型。)這是迅速成爲行業標準的模式來開發WPF應用程序,具有在創建靈活的動態用戶界面方面有很多優勢。如果你想做任何重要的WPF開發,我強烈建議研究這種模式。這需要一點時間才能習慣,但最終還是值得的。