2013-07-23 60 views
1

在我的Windows 8應用裏面,我試圖改變FlipView的一個DataTemplate中TextBlock的文字...訪問控件FlipView聯合國XAML

我FlipView的DataTemplate(簡體...):

 <FlipView.ItemTemplate> 
      <DataTemplate> 
       <TextBlock x:Name="test" /> 
      </DataTemplate> 
     </FlipView.ItemTemplate> 

我試過這個解決方案:How do I access a control inside a XAML DataTemplate?

所以我的.cs:

 var _Container = flipView.ItemContainerGenerator.ContainerFromItem(flipView.SelectedItem); 

     var _Children = AllChildren(_Container); 


     var myTextBlock= _Children.OfType<TextBlock>().FirstOrDefault(c => c.Name.Equals("test")); 

     myTextBlock.Text = "test"; 

與方法:

public List<Control> AllChildren(DependencyObject parent) 
    { 
     var _List = new List<Control>(); 
     for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++) 
     { 
      var _Child = VisualTreeHelper.GetChild(parent, i); 
      if (_Child is Control) 
       _List.Add(_Child as Control); 
      _List.AddRange(AllChildren(_Child)); 
     } 
     return _List; 
    } 

,但我得到一個NullReferenceException錯誤:「{」未將對象引用設置到對象的實例。「}」 所以也沒有找到我的文本塊...

感謝

+0

嘿被它爲你工作? – loop

回答

0

這位朋友你好我已檢查code..and我發現是一個非常不顯眼mistake..that是關於控制 keyword..actually您能夠控制它的類型你想在搜索你flipview..like文本塊,文本框等...你必須改變你的AllChilderen F.結像這樣,然後一切將正常工作..

public List<TextBlock> AllChildren(DependencyObject parent) 
    { 
     var _List = new List<TextBlock>(); 
     int j = VisualTreeHelper.GetChildrenCount(parent); 
     for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++) 
     { 
      var _Child = VisualTreeHelper.GetChild(parent, i); 
      if (_Child is TextBlock) 
       _List.Add(_Child as TextBlock); 
      _List.AddRange(AllChildren(_Child)); 
     } 
     return _List; 
    } 

希望它會幫助你..

+0

非常感謝你,它的工作! – Gab

+0

但我對我的FlipView裏面的gridView做了同樣的事情,並且我又得到了同樣的問題:( – Gab