Свяжите эти данные с моделью представления и выполните команду, когда пользователь нажимает кнопку. Команда и данные находятся в модели представления, поэтому в ней есть все, что нужно.
public class YourViewModel : ViewModel
{
private readonly ICommand doSomethingCommand;
private string data;
public YourViewModel()
{
this.doSomethingCommand = new DelegateCommand(this.DoSomethingWithData);
}
public ICommand DoSomethingCommand
{
get { return this.doSomethingCommand; }
}
public string Data
{
get { return this.data; }
set
{
if (this.data != value)
{
this.data = value;
this.OnPropertyChanged(() => this.Data);
}
}
}
private void DoSomethingWithData(object state)
{
// do something with data here
}
}
XAML:
<TextBox Text="{Binding Data}"/>
<Button Command="{Binding DoSomethingWithData}"/>
Информацию о различных зависимостях в вышеприведенном примере, таких как ViewModel
и DelegateCommand
, см. В моей серии сообщений на MVVM .
РЕДАКТИРОВАТЬ после получения дополнительной информации: Для отслеживания выбора элемента просто введите модель представления для представления элемента:
public class CustomerViewModel : ViewModel
{
private bool isSelected;
public bool IsSelected
{
get { return this.isSelected; }
set
{
if (this.isSelected != value)
{
this.isSelected = value;
this.OnPropertyChanged(() => this.IsSelected);
}
}
}
}
Ваша модель "основного" вида представит коллекцию этих элементов (обычно ObservableCollection<T>
):
public ICollection<CustomerViewModel> Customers
{
get { return this.customers; }
}
Ваш вид будет привязан как:
<ListBox ItemsSource="{Binding Customers}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Обратите внимание, как для каждого ListBoxItem
его свойство IsSelected будет связано со свойством CustomerViewModel.IsSelected
. Таким образом, ваша модель основного вида может просто проверить это свойство, чтобы определить, какие клиенты выбраны:
var selectedCustomers = this.Customers.Where(x => x.IsSelected);