Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight ListBox控件没有';不能正确地重新绑定_Silverlight_Data Binding_Listbox - Fatal编程技术网

Silverlight ListBox控件没有';不能正确地重新绑定

Silverlight ListBox控件没有';不能正确地重新绑定,silverlight,data-binding,listbox,Silverlight,Data Binding,Listbox,我将ListBox控件与ItemTemplate一起使用,如下所示: <ListBox Name="lbItemsList" ItemsSource="{Binding}" > <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{

我将ListBox控件与ItemTemplate一起使用,如下所示:

<ListBox Name="lbItemsList" ItemsSource="{Binding}" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding ID}" Padding="5,0,0,0" />
                <TextBlock Text=" - " Padding="5,0,0,0" />
                <TextBlock Text="{Binding Description}" Padding="5,0,0,0" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
但有时我需要将不同或修改过的项目列表重新绑定到列表框。执行此操作时,列表框不会随新列表更新,并且绑定似乎无法正常工作,除非执行以下操作:

lbItemssList.ItemsSource = null;
lbItemssList.ItemsSource = _itemsList.Values;

我对其他ListBox控件也做了同样的事情,但没有出现这个问题。我在这里错过了什么?

我已经厌倦了它在我身边,它工作得很好。 我的代码

public MainPage()
    {
        InitializeComponent();
        BindData();
    }

private void BindData()
    {
        List<MyClass> listClass = new List<MyClass>();
        for (int i = 0; i < 20; i++)
        {
            MyClass aMyClass = new MyClass();
            aMyClass.Description = "Description  " + i.ToString();
            aMyClass.ID = i;
            listClass.Add(aMyClass);
        }

        lbItemsList.ItemsSource = listClass;
    }

private void buttonaa_Click(object sender, RoutedEventArgs e)
    {
        List<MyClass> listClass = new List<MyClass>();
        for (int i = 20; i < 40; i++)
        {
            MyClass aMyClass = new MyClass();
            aMyClass.Description = "Description  " + i.ToString();
            aMyClass.ID = i;
            listClass.Add(aMyClass);
        }
        lbItemsList.ItemsSource = null;
        lbItemsList.ItemsSource = listClass;
    }



 <ListBox Name="lbItemsList" ItemsSource="{Binding}" >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding ID}" Padding="5,0,0,0" />

                    <TextBlock Text="{Binding Description}" Padding="5,0,0,0" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
public主页()
{
初始化组件();
BindData();
}
私有void BindData()
{
List listClass=新列表();
对于(int i=0;i<20;i++)
{
MyClass=新的MyClass();
aMyClass.Description=“Description”+i.ToString();
aMyClass.ID=i;
添加(类);
}
lbItemsList.ItemsSource=listClass;
}
私有无效按钮A_单击(对象发送者,路由目标)
{
List listClass=新列表();
对于(int i=20;i<40;i++)
{
MyClass=新的MyClass();
aMyClass.Description=“Description”+i.ToString();
aMyClass.ID=i;
添加(类);
}
lbItemsList.ItemsSource=null;
lbItemsList.ItemsSource=listClass;
}


请务必检查您是否从数据库中获得相同的记录,并且您认为该列表没有刷新功能

我已经厌倦了我的工作,并且工作正常。 我的代码

public MainPage()
    {
        InitializeComponent();
        BindData();
    }

private void BindData()
    {
        List<MyClass> listClass = new List<MyClass>();
        for (int i = 0; i < 20; i++)
        {
            MyClass aMyClass = new MyClass();
            aMyClass.Description = "Description  " + i.ToString();
            aMyClass.ID = i;
            listClass.Add(aMyClass);
        }

        lbItemsList.ItemsSource = listClass;
    }

private void buttonaa_Click(object sender, RoutedEventArgs e)
    {
        List<MyClass> listClass = new List<MyClass>();
        for (int i = 20; i < 40; i++)
        {
            MyClass aMyClass = new MyClass();
            aMyClass.Description = "Description  " + i.ToString();
            aMyClass.ID = i;
            listClass.Add(aMyClass);
        }
        lbItemsList.ItemsSource = null;
        lbItemsList.ItemsSource = listClass;
    }



 <ListBox Name="lbItemsList" ItemsSource="{Binding}" >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding ID}" Padding="5,0,0,0" />

                    <TextBlock Text="{Binding Description}" Padding="5,0,0,0" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
public主页()
{
初始化组件();
BindData();
}
私有void BindData()
{
List listClass=新列表();
对于(int i=0;i<20;i++)
{
MyClass=新的MyClass();
aMyClass.Description=“Description”+i.ToString();
aMyClass.ID=i;
添加(类);
}
lbItemsList.ItemsSource=listClass;
}
私有无效按钮A_单击(对象发送者,路由目标)
{
List listClass=新列表();
对于(int i=20;i<40;i++)
{
MyClass=新的MyClass();
aMyClass.Description=“Description”+i.ToString();
aMyClass.ID=i;
添加(类);
}
lbItemsList.ItemsSource=null;
lbItemsList.ItemsSource=listClass;
}

请检查您是否正在从数据库获取相同的记录,并且您认为列表没有刷新功能

首先,这里没有“绑定”,您只需将集合分配给
ItemsSource
属性

ItemsSource
属性会将分配给它的值与当前值进行比较,如果值相同,则不会执行任何操作

我猜您的
属性不是
可观察集合
(在这种情况下,列表框将跟踪集合更改,而无需您做任何更改)。另外,虽然您可能已经更改了
集合的内容,但它仍然是最初分配给
项目资源
的集合的同一个实例。首先,这里没有“绑定”,您只需将集合分配给
项目资源
属性即可

ItemsSource
属性会将分配给它的值与当前值进行比较,如果值相同,则不会执行任何操作


我猜您的
属性不是
可观察集合
(在这种情况下,列表框将跟踪集合更改,而无需您做任何更改)。另外,虽然您可能已经更改了
集合的内容,但它仍然是最初分配给
项资源

的集合的同一实例,我认为@Zannjaminderson在问为什么要使其工作,必须初始分配
null
。在您的情况下,您可以删除
null
赋值,它仍然可以工作。See可能会回答一个解释。我想@Zannjaminderson是在问为什么初始赋值
null
是必要的,以使其工作。在您的情况下,您可以删除
null
赋值,它仍然可以工作。请参阅,这可能是一个解释。xaml中有一个绑定(到当前DataContext),但随后它会在后面的代码中被覆盖:)aaah-因此它只是查看它是否是一个不同的实例,而不是查看集合是否有任何不同。我懂了。那就对了,谢谢!xaml中有一个绑定(到当前DataContext),但随后它会在代码中被覆盖:)aaah-因此它只是查看它是否是不同的实例,而不是查看集合是否有任何不同。我懂了。那就对了,谢谢!