2013-02-15 38 views
0

我想在列表視圖中動態創建一個文本框和一個按鈕,並且工作正常。 iam嘗試的下一件事就是讓文本出現在動態創建的文本框中,並顯示爲button_click事件上按鈕的內容。我很困惑並且不知道如何訪問動態創建的按鈕或代碼背後的文本因爲「名稱屬性」對於相同的內容無效。如何檢索動態創建的文本框的文本,並將其顯示爲wpf中動態創建的按鈕的內容c#

任何建議,歡迎......

XAML

<ListView Height="222" HorizontalAlignment="Left" Margin="341,24,0,0" Name="listView1" VerticalAlignment="Top" Width="290" Background="Green" 
       AllowDrop="True" 
       DragDrop.Drop="listview_drop" 
       DragDrop.DragEnter="treeview_dragenter" ItemsSource="{Binding XPath=self::*}"></pre> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" x:Name="stc"> 
        <TextBlock Text="{Binding Path=Name}" Margin="0,0,3,0"/> 
        <ComboBox Margin="0,0,3,0" x:Name="cbox1"> 
         <ComboBoxItem Content="Less Than"/> 
         <ComboBoxItem Content="Greater Than"/> 
         <ComboBoxItem Content="Equals"/> 
        </ComboBox> 
        <TextBox Margin="0,0,3,0" Width="50" x:Name="textbox1" /> 
        <Button x:Name="but1" Height="25" Width="35" Click="click" Content="gen" /> 
       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

代碼

private void click(object sender, RoutedEventArgs e) 
{ 
    //Don`t know what do do here   
} 
+1

看不到你的XAML – Manish 2013-02-15 09:30:24

+0

srry manish這裏是xaml ....... – Abhinav 2013-02-15 09:35:02

回答

1

您可以通過FindName方法來獲取指定的文本框:

private void click(object sender, RoutedEventArgs e) 
{ 
    var button = sender as Button; 
    var parent = button.Parent as FrameworkElement; 
    var textBox = parent.FindName("textbox1") as TextBox; 
    button.Content = textBox.Text; 
} 
+0

我工作就像一個魔術.......謝謝克萊門斯.. – Abhinav 2013-02-15 10:21:18

0

在您的點擊事件處理程序中,sender參數將是被點擊的Button。所以如果你把它投到Button,你會得到按鈕對象來玩。

但是,只是讓你的按鈕。如果您隨後獲得了ButtonDataContext,那麼該按鈕所屬的對象就是創建用於顯示的對象。

通常在這一點上,我會通過數據綁定將模板中的東西的文本與DataContext對象相關聯,因此這只是恰當操作DataContext對象的情況,UI將自動更新。

如果你還沒有做到這一點,那麼從Button你可以去WPF視覺樹,並開始尋找模板中的其他控件,但儘管這是可能的,但它通常比它的價值更麻煩,當你可以只是使用數據綁定。

+0

謝謝你的解釋馬修.... .. – Abhinav 2013-02-15 12:52:30