2016-03-30 18 views
0

Basit bir dosya yöneticisi oluşturuyorum. ListBox'u çift tıklatarak yeni bir dizin açmaya çalışıyorum. MouseDoubleClick kullanarak koduma secondtb1.Text özellik değerini nasıl alabilirim?Şablonda TextBox değeri nasıl alınır

Benim 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

geride kodu olay ele yapıyor do görünüyor olduğundan, –

+0

kodda 'secondtb2.Text' kullanmak sadece olabilir Ama bunu içinde, liste kutusunda –

+0

yılında Oh secondtb1 çok şey var dava yerine bir komut kullan ve geçerli bağlamayı ona geçir –

cevap

0

Eğer metin kutusu içerik değeri elde istiyorsanız: Bunu gibi kontroller numaralandırmak sonra

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; 
      } 
     } 
    } 
} 

ve: Bu yöntemi kullanabilirsiniz

secondtb2.Text; 

:

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

Çalışmaya ve Pencerenizin (örneğin) görsel çocuklara sahip olduğunu bulmaya çalışıyorsanız, bu yöntemi Yüklenen olay işleyicisinde çalıştırmayı deneyin. Kurucuda (InitializeComponent() öğesinden sonra bile) çalıştırırsanız, görsel çocuklar henüz yüklenmez ve çalışmaz. kaynağına Bağlantı: Find all controls in WPF Window by type

İlgili konular