ListBox中的数据消失

堆烟 2009-02-01 11:23:10
<stackpanel x:name="spContent">
<listbox x:name="lb" />
</stackpanel>
代码里设置lb.ItemsSource之后,数据显示正常
然后在折叠代码里
if ( spContent.Visibility == Visibility.Visible ) { // 当前为打开状态
spSetWidget.Visibility = Visibility.Collapsed;
spContent.Visibility = Visibility.Collapsed;
linkSet.Visibility = Visibility.Collapsed;
}
else { // 当前为折叠状态
spSetWidget.Visibility = currentSetAreaVisibility;
spContent.Visibility = Visibility.Visible;
linkSet.Visibility = Visibility.Visible;
}
将stackpanel的可见性设为collapsed,再设为Visible,lb中的数据就看不到了,一片空白……

PS:在做类似iGoogle的Widgets,所以有折叠/打开
...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
堆烟 2009-02-14
  • 打赏
  • 举报
回复
不能编辑回帖,只能回复一个。
上面的那条显示的测试案例给了一下:
MessageBox.Show( "UIEContent转换为ListBox后" + "所含元素为" + lb.Items.Count.ToString() + ",高度为" + lb.Height.ToString(), "!!!!", MessageBoxButton.OK );
高度300,含元素数20,都正常……

郁闷了
堆烟 2009-02-14
  • 打赏
  • 举报
回复
我在打开语句中加入了测试代码:
if ( spContent.Children.Count == 0 ) {
MessageBox.Show( "StackPanel中的子元素丢失……", "!!!!", MessageBoxButton.OK );
}
else if ( double.IsNaN( spContent.Height ) || spContent.Height <= 1 ) {
MessageBox.Show( "StackPanel的高度变为" + spContent.Height.ToString(), "!!!!", MessageBoxButton.OK );
}
else if( UIEContent != null ) {
if ( UIEContent.Visibility == Visibility.Collapsed ) {
MessageBox.Show( "UIEContent不可见", "!!!!", MessageBoxButton.OK );
}
else {
ListBox lb = UIEContent as ListBox;
if ( lb == null ) {
MessageBox.Show( "UIEContent转换为ListBox失败", "!!!!", MessageBoxButton.OK );
}
else { // 显示这个测试案例,但是高度正常(是我之前设置的300)
MessageBox.Show( "UIEContent转换为ListBox后,所含元素为0,高度为" + lb.Height.ToString(), "!!!!", MessageBoxButton.OK );
}
}
} // else if( UIEContent != null )

我添加数据绑定的时候,是这样的:
lbMiniblogContent.ItemTemplate = Application.Current.Resources["MiniblogContentDataTemplate"] as DataTemplate; // 绑定MiniBlog类的成员
lbMiniblogContent.SelectedIndex = -1;
lbMiniblogContent.ItemsSource = getData( xroot ); // getData返回一个List<MiniBlog>
难道还要加点别的?
堆烟 2009-02-14
  • 打赏
  • 举报
回复
1、使用spContent.UpdateLayout(),不行。
2、将ListBox传入到自定义控件中,赋给一个UIElement uie,然后在折叠语句中调用uie.UpdateLayout(),也不行
ms44 2009-02-11
  • 打赏
  • 举报
回复
updatelayout()
shj0633 2009-02-11
  • 打赏
  • 举报
回复
把代码加到这里边试试呢
c#
this.Dispatcher.BeginInvoke(delegate()
{
.....
});

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧