2010-09-10 7 views
0

Я пишу приложение, в котором пользователи вводят записи. У меня есть класс, который представляет запись. Работает с текстовыми полями.Silverlight Data Binding

MainPage.xaml.cs:

public MainPage() 
    { 
     InitializeComponent(); 

     // newExpense is of type ExpenseInfo 
     LayoutRoot.DataContext = newExpense; 
    } 

ExpenseInfo.cs:

public class ExpenseInfo 
{ 

    public String Name { get; set; } 

    // ... 
} 

MainPage.xaml:

<TextBox Text="{Binding Name, Mode=TwoWay}" Height="23" HorizontalAlignment="Left" Margin="13,205,0,0" Name="NameTextBox" VerticalAlignment="Top" Width="74" /> 

Т его работы по получению и установке ввода. Два вопроса:

Что делать, если у меня есть ListBox, члены которого я пытаюсь представить с помощью ICollection в ExpenseInfo? Могу ли я автоматически привязать его? Что делать, если вместо этого я использую ComboBox?

Иногда я хочу, чтобы ExpenseInfo менял элементы управления вводами. Как я могу это сделать? (Например, если пользователь вводит «3 $ 0» в текстовое поле «Стоимость», я хотел бы автоматически изменить его на «$ 30».)

Спасибо. Я новичок в Silverlight 4.

ответ

1

Если вы можете связать отдельную запись с текстовым полем, стандартная коллекция этих записей будет связываться точно так же, как и в поле коллекции. Так что да, вы можете сделать именно это, хотя детали для ComboBox меняются. This article имеет гораздо больше информации о привязке данных в WPF, но похоже, что у вас есть хорошая базовая ручка.

Чтобы автоматически исправить неверные данные, прочитайте эту статью о процессе Validation. В нем объясняется, как настроить свою собственную систему для обнаружения ошибок и ошибок при вводе данных. Обработка неверных данных не обязательно должна показывать предупреждение в пользовательском интерфейсе - вы можете написать обратно в поле .Value вашего TextBox, чтобы автоматически исправлять ввод, если вы знаете, как это сделать, но вам решать написать код как обнаружить, что не так, и понять, что правильно.