首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

Expander 中 ContentTemplate 绑定数据,新手多谢

2012-03-25 
Expander 中 ContentTemplate 绑定数据,新手谢谢HTML code !--Expander内容模板开始--controlsToolkit:

Expander 中 ContentTemplate 绑定数据,新手谢谢

HTML code
 <!--Expander内容模板开始-->                    <controlsToolkit:Expander.ContentTemplate>                        <DataTemplate>                            <StackPanel HorizontalAlignment="Left">                                <ListBox x:Name="lsbNodeList" Margin="5"  MinHeight="100" MinWidth="100" Opacity="0" >                                    <ListBox.ItemTemplate>                                        <DataTemplate>                                            <TextBlock Text="{Binding Path=AreaName}" Margin="5" Width="100" />                                        </DataTemplate>                                    </ListBox.ItemTemplate>                                </ListBox>                            </StackPanel>                        </DataTemplate>                    </controlsToolkit:Expander.ContentTemplate>                    <!--Expander内容模板结束-->


如上代码,是Expander.ContentTemplate 内容,

后台有
 
C# code
 public ObservableCollection<TravelNode> travlnodes = new ObservableCollection<TravelNode>();


TravelNode 类

C# code
public class TravelNode : INotifyPropertyChanged    {        private string _areaname;        public TravelNode(string areaname)        {            this.AreaName = areaname;        }        public string AreaName        {            get            {                return _areaname;            }            set            {                if (string.Compare(_areaname, value) == 0) return;                _areaname = value;                OnPropertyChanged("AreaName");            }        }        protected virtual void OnPropertyChanged(string propertyName)        {            if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName));        }        #region INotifyPropertyChanged 成员        public event PropertyChangedEventHandler PropertyChanged;        #endregion    }


我在MainPage_Load中绑定
C# code
 private void MainPage_Loaded(object sender, RoutedEventArgs e)        {            travlnodes.Add(new TravelNode("wgewgwg"));            travlnodes.Add(new TravelNode("wgewgwewgwg"));            travlnodes.Add(new TravelNode("wgewgwg"));            travlnodes.Add(new TravelNode("wgewegwegwgwg"));            travlnodes.Add(new TravelNode("wgewjjgwg"));            travlnodes.Add(new TravelNode("wgerjjwgwg"));            travlnodes.Add(new TravelNode("wgetrjwgwg"));            travlnodes.Add(new TravelNode("wehewhwhhmt"));            List<ListBox> lbs = this.GetChildObjects<ListBox>(this.sampleExpander.ContentTemplate.LoadContent(), "");            if (lbs.Count > 0)            {                lbs[0].ItemsSource = travlnodes;            }        }   /// <summary>        /// 查询指定的子控件,name 为空所有子控件        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="obj"></param>        /// <param name="name"></param>        /// <returns></returns>        public List<T> GetChildObjects<T>(DependencyObject obj, string name) where T : FrameworkElement        {            DependencyObject child = null;            List<T> childList = new List<T>();            for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)            {                child = VisualTreeHelper.GetChild(obj, i);                if (child is T && (((T)child).Name == name || string.IsNullOrEmpty(name)))                {                    childList.Add((T)child);                }                childList.AddRange(GetChildObjects<T>(child, ""));            }            return childList;        } 



为什么无法得到数据


[解决办法]
得不到数据的意思是无法显示数据集合到UI对么? 

试着Debug,看看 return childList;是否正常,集合是否为空?

List<ListBox> lbs = this.GetChildObjects<ListBox>(this.sampleExpander.ContentTemplate.LoadContent(), "");


lbs是否为空?
[解决办法]

热点排行