如何在Silverlight中使用Listbox进行动态绑定?

时间:2011-05-20 10:52:30

标签: silverlight data-binding silverlight-4.0 listbox

我正在开发silverlight 4应用程序。我使用以下列表框进行动态绑定

<ListBox Margin="44,100,46,138" x:Name="lstbox1">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical">
                        <TextBlock Text="{Binding A1}" Foreground="Gray" FontSize="14" Width="100" Height="20" ></TextBlock>
                        <TextBlock Text="{Binding A2}" Foreground="Red" Width="100" Height="20" ></TextBlock>
                        <Line X1="-3400" Y1="32" X2="10" Y2="32" Stroke="Gray" StrokeThickness="1"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

我在

背后的代码中使用以下代码
List<Data1> ObserCollObj = new List<Data1>();
        public MainPage()
        {
            InitializeComponent();
            Data1 obj1 = new Data1("aaa", "dasd");
            ObserCollObj.Add(obj1);
            lstbox1.ItemsSource = ObserCollObj;

        }

我正在使用以下课程

class Data1
    {
        public String A1 { get; set;}
        public String A2 { get; set; }
        public Data1()
        {
        }
        public Data1(String a1, String a2)
        {
            A1 = a1;
            A2 = a2;
        }
    }

我正在使用以上所有代码,但动态绑定不起作用。我的xaml或代码背后有什么问题吗?你能告诉我哪里出错了吗?能否请您解决上述问题?

1 个答案:

答案 0 :(得分:0)

最初的问题是Data1类需要公开(目前是其内部)。

但是,如果你真的想要动态绑定,那么你可能意味着你希望能够在列表中添加新条目并让它们出现在UI中。

因此,您应该使用ObservableCollection<Data1>而不是简单的List<Data1>

您可能还希望能够修改单个条目的属性,并在UI中反映这些更改,为此,您需要在INotifyPropertyChanged类上实施Data1