C# XAML StackPanel未从代码隐藏更新

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)

我已经在我的XAML中创建了一个stackpanel,现在在c#代码中,我正在向该stackpanel添加列表框

我的wp7应用程序中的onbuttonClicks事件

因此,最初成功添加了5项,但在下一轮(单击按钮)时,stackpanel没有更新。而在调试stackpanel时,子项计数为10(使用shift+F9),但XAML不会更新

我的c#代码是:

private void BindAvailableItems(JToken JToken)
{
如果(jToken.Count()>0)
{
for(int i=0;istackPnl.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();
                }
            }