Как сделать динамическое связывание со списком в Silverlight? - PullRequest
1 голос
/ 20 мая 2011

Я занимаюсь разработкой приложения 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 голосов
/ 20 мая 2011

Первоначальная проблема заключается в том, что класс Data1 должен быть общедоступным (в настоящее время он является внутренним).

Однако, если вы действительно хотите динамическое связывание, вы, вероятно, хотите иметь возможность добавлять новые записи.в списке и для их отображения в пользовательском интерфейсе.

Поэтому вы должны использовать ObservableCollection<Data1> вместо простого List<Data1>.

. Вы также можете захотеть изменитьсвойства отдельных записей и отражают эти изменения в пользовательском интерфейсе, для этого вам необходимо реализовать INotifyPropertyChanged в своем классе Data1.

...