2016-03-30 101 views
0

我正在創建一個簡單的文件管理器。我嘗試打開一個新的目錄,雙擊ListBox。如何在我的代碼中使用MouseDoubleClick獲得secondtb1.Text屬性值?如何獲取模板中的TextBox值

我的XAML

<ListBox x:Name="secondPageListbox" Background="{x:Null}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="320"/> 
       <ColumnDefinition Width="50"/> 
       <ColumnDefinition Width="186"/> 
      </Grid.ColumnDefinitions> 
      <Grid Grid.Column="0"> 
       <TextBlock x:Name="secondtb1" TextWrapping="Wrap" Foreground="White" Text="{Binding Name}"/> 
      </Grid> 
      <Grid Column="1"> 
       <TextBlock x:Name="secondtb2" TextWrapping="Wrap" Foreground="White" Text="{Binding current.Extension}"/> 
      </Grid> 
      <Grid Column="2"> 
       <TextBlock x:Name="secondtb3" TextWrapping="Wrap" Foreground="White" Text="{Binding creationTime}"/> 
      </Grid> 
     </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}"> 
     <EventSetter Event="MouseDoubleClick" Handler="SecondListBoxItem_MouseDoubleClick"/> 
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 
+1

既然你似乎做事件中的代碼背後的處理,你可以使用'secondtb2.Text'在後面 –

+0

的代碼,但我有很多secondtb1在列表框中 –

+0

哦,在那大小寫使用一個命令,並將當前綁定傳遞給它 –

回答

0

如果你想獲得文本框的內容值:

secondtb2.Text; 

您可以使用此方法:

public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject 
{ 
    if (depObj != null) 
    { 
     for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) 
     { 
      DependencyObject child = VisualTreeHelper.GetChild(depObj, i); 
      if (child != null && child is T) 
      { 
       yield return (T)child; 
      } 

      foreach (T childOfChild in FindVisualChildren<T>(child)) 
      { 
       yield return childOfChild; 
      } 
     } 
    } 
} 

,然後你枚舉控件像這樣:

foreach (TextBlock textBlock in FindVisualChildren<TextBlock>(window)) 
{ 
    textBlock.Text; // your text from TextBlock 
} 

如果你想讓這個工作,並發現你的窗口(例如)有0可視兒童,嘗試在Loaded事件處理程序中運行此方法。如果你在構造函數中運行它(甚至在InitializeComponent()之後),那麼可視化子項目不會被加載,並且它不起作用。 鏈接到源:Find all controls in WPF Window by type

相關問題