C# XAML StackPanel未从代码隐藏更新
我已经在我的XAML中创建了一个stackpanel,现在在c#代码中,我正在向该stackpanel添加列表框 我的wp7应用程序中的onbuttonClicks事件 因此,最初成功添加了5项,但在下一轮(单击按钮)时,stackpanel没有更新。而在调试stackpanel时,子项计数为10(使用shift+F9),但XAML不会更新 我的c#代码是:C# XAML StackPanel未从代码隐藏更新,c#,windows-phone-7,xaml,stackpanel,C#,Windows Phone 7,Xaml,Stackpanel,我已经在我的XAML中创建了一个stackpanel,现在在c#代码中,我正在向该stackpanel添加列表框 我的wp7应用程序中的onbuttonClicks事件 因此,最初成功添加了5项,但在下一轮(单击按钮)时,stackpanel没有更新。而在调试stackpanel时,子项计数为10(使用shift+F9),但XAML不会更新 我的c#代码是: private void BindAvailableItems(JToken JToken) { 如果(jToken.Count()>0)
private void BindAvailableItems(JToken JToken)
{
如果(jToken.Count()>0)
{
for(int i=0;i stackPnl.Children.Add(项目)这里是您的问题,假设存在可视化问题。您正在将ListBoxItem
实例添加到StackPanel
中。虽然这是一件可行的事情,但我看不到这样做的理由。显然,因为StackPanel
控件没有内置的触摸屏,所以您无法看到新元素。是吗将带有列表框的StackPanel
放在for循环之后,可以尝试调用stackPnl吗。InvalidateVisual@Fabrice:stackPnl.InvalidateVisual()语法错误!???Argh在wp7上不可用…对不起,为什么您要将ListBoxItems直接添加到StackPanel,而不是使用ListBox并让它为您处理填充面板的操作?
private void BindAvailableItems(JToken jToken)
{
if (jToken.Count() > 0)
{
for (int i = 0; i < jToken.Count(); i++)
{
ListBoxItem Item = new ListBoxItem();
DataTemplate ContentTemplate = Application.Current.Resources["UserAvailableItemsTemplate"] as DataTemplate;
Item.ContentTemplate = ContentTemplate;
MultiLineItem Content = new MultiLineItem();
Content.Line1 = "http://localhost:5141" + jToken[i]["ItemImageUrl"].ToString();
Item.Content = Content;
stackPnl.Children.Add(Item); //<---stackPanel
stackPnl.UpdateLayout();
}
}