2013-04-12 31 views
0

我使用下面的代碼將在運行時間控制在Grid卸下控制:如何獲得並在位置從電網

void AddControl(UserControl oControl) 
{ 
    grid.Children.Add(oControl); 
    oControl.SetValue(Grid.RowProperty, 1); 
    oControl.SetValue(Grid.ColumnProperty, 0); 
} 

我想刪除在同一位置的控制(行= 1,列= 0)。我沒有保留前面添加的控件的參考。如何從Grid的位置(行= 1和列= 0)獲取和刪除控件?

+0

http://stackoverflow.com/a/1511802/293712 – Maheep

+0

'我在網格中的運行時添加了一個控件...'您通常不會在WPF中執行此操作。在代碼中創建/操作UI元素不是一個好習慣。請解釋你需要做什麼,我可以告訴你在WPF中實現它的正確方法。 –

+0

@HighCore,我有兩個用戶控件,其中有一些功能。在主窗口中,我有兩個按鈕。在第一次點擊時,我在第二行設置UserControl1,然後點擊第二次,我將UserControl2設置在相同的位置。 – Brij

回答

3

我有兩個用戶控件,它們有一些功能。在主窗口 我有兩個按鈕。在第一,我第二行中設置 的UserControl1和第二的點擊,我在同樣的位置

你爲了實現這一目標所需要的設定 UserControl2點擊是TabControl

<TabControl> 
     <TabItem Header="Tab 1"> 
      <Grid Background="Gray"> 
       <TextBlock Text="Here goes UserControl 1" 
          VerticalAlignment="Center" HorizontalAlignment="Center"/> 
      </Grid> 
     </TabItem> 

     <TabItem Header="Tab 2"> 
      <Grid Background="Gray"> 
       <TextBlock Text="Here goes UserControl 2" 
          VerticalAlignment="Center" HorizontalAlignment="Center"/> 
      </Grid> 
     </TabItem> 
    </TabControl> 

結果:

enter image description here

爲什麼在代碼中添加控件不好?

因爲它會產生可維護性混沌。 UI元素必須在XAML中定義。這就是XAML的用途。在後臺代碼中創建UI元素不僅僅是更多的代碼,它很容易出錯,它完全破壞了XAML支持的UI和代碼的分離。

如果我需要動態創建UI?

然後您必須使用在XAML中定義的DataTemplates。根據模型/視圖模型中的某些屬性,可以選擇使用DataTriggers修改UI元素的狀態。WPF的「動態」概念實際上與傳統的UI框架確實不同。

+0

+1。我仍然認爲有些情況下需要在代碼背後做這些事情。謝謝! – Dilshod

+0

@Dilshod哪種情況?我確定有這種情況下的XAML方式...... –

+0

只是一個小例子。我有名單。它包含日期時間,字符串,整數....我想把DatePicker的DateTime類型,我想要一個整數的Slider ....類似的東西。XAML有可能嗎? – Dilshod