2012-08-30 66 views
0

我有一個UserControl,我需要在運行時(每個用戶的操作)不斷添加到StackPanel。我想爲StackPanel中的每個項目右上角的一個關閉按鈕(一個小'x')。如何提供一個關閉功能從StackPanel中刪除一個項目?

我可以這樣做:將我的UserControl添加到某個面板上,該面板上有鼠標懸停時發出的'x'按鈕,點擊時會從StackPanel中刪除該項目。

但是,我正在尋找更好的解決方案來解決這個問題。像有沒有提供類似功能的任何控制?

我在找TileView。我需要的只是一行Tiles,它可以保持每個用戶的輸入,並且可以刪除一個「Tile」。每個瓷磚將包含我的UserControl。

請讓我知道,

回答

1

可以使用tileview,但電網可以過這裏工作,你可以添加你的usercontrol到一個小區,在其他細胞,你可以給一個關閉按鈕和關閉按鈕單擊可以從網格中刪除該行,如果要添加多個用戶控件,則可以從網格中刪除該行,
可以輕鬆地維護網格。

+0

+1爲替代解決方案。 但是,我希望我的用戶控件水平添加,就像我的情況下的StackPanel的Orientation =「Horizo​​ntal」一樣。另外,這是唯一的方法嗎?有什麼其他想法可以想到嗎? – Shankar

+0

如果你只想要水平方向,我建議只使用一行,coulum可以根據需要動態添加或刪除。 – Buzz

0

您可以使用ItemsControl輕鬆完成此操作。把它看作沒有選擇的ListBox。只需稍加修改即可:

<ItemsControl HorizontalAlignment="Center" VerticalAlignment="Center"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Border Padding="4" Background="CornflowerBlue"> 
        <Grid> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="Auto"/> 
          <RowDefinition/> 
         </Grid.RowDefinitions> 

         <Button Content="Close" HorizontalAlignment="Right"/> 


         <Grid Margin="4" Grid.Row="1"> 
          <!-- put your usercontrol here --> 
         </Grid> 

        </Grid> 
       </Border> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 

     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal"/> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
    </ItemsControl>