2013-12-22 89 views
0

我要访问内部列表视图命名控制datatemplet我也跟着这样:How to Access a Named Control Inside a XAML DataTemplate (using CSharp访问控制DataTemplete

itemlistview.ItemsSource=new List<MyObject>();  
foreach (var item in itemListView.Items) 
       { 
        var _Container = itemListView.ItemContainerGenerator 
         .ContainerFromItem(item); 
        var _Children = AllChildren(_Container); 

        var _FirstName = _Children.OfType<StackPanel>() 
         .First(x => x.Name.Equals("subjectListItem")); 

        _FirstName.Visibility = 
         Visibility.Collapsed; 
       } 

var item in itemListView.Items问题它retruns我传递给不ListView控件的ItemsSource的datatemplete内CONTROLES的为MyObject 。 那么如何返回控件?

回答

0

ItemContainerGenerator.ContainerFromItem(object)应返回ListViewItem的实例,其中包含item的数据。

但是,这种做法阻碍了WPF/WinRT框架。 “正确”的方法是控制数据并让用户界面对其作出反应。

喜欢的东西:

// in code 
var list = new List<MyObject>(); 
foreach (var item in list) 
{ 
    item.IsSomethingVisible = false; 
} 
itemlistview.ItemsSource = list; 

<!--in XAML--> 
<StackPanel Visibility="{Binding IsSomethingVisible, 
        Converter={StaticResource BooleanToVisibilityConverter}}".../> 

<!--The converter is defined in resources of some higher level--> 
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>