Я создал проект с моделью MVVM и сделал это с помощью подхода вида-первого.Управление представлением в MVVM
У меня есть TextBox
в моем XAML коде, наряду с Button
, чтобы передать данные из TextBox
:
<!-- View - XAML code -->
<TextBox
MinWidth="30"
Name="TagId"/>
<Button
Command="{Binding AddTagCommand}"
CommandParameter="{Binding Text, ElementName=TagId}"
Content="Add"/>
Когда я нажимаю кнопку, я хочу TextBox
очищено. Согласно Prism manual:
В некоторых случаях код-позади может содержать UI логического кода, который реализует визуальное поведение, которое трудно или неэффективно выразить в Extensible Application Markup Language (XAML), такие как сложные анимации, или когда код должен непосредственно манипулировать визуальными элементами, которые являются частью представления.
Вот код позади и модель.
//View - code behind
public partial class ApplicationStarterView : UserControl
{
public ApplicationStarterView()
{
}
public ApplicationStarterView(ApplicationStarterViewModel viewModel) : this()
{
DataContext = viewModel;
InitializeComponent();
}
}
//View model
public class ApplicationStarterViewModel : BindableBase
{
private readonly IUnityContainer _container;
public ApplicationStarterViewModel(IUnityContainer container)
{
_container = container;
AddTagCommand = new DelegateCommand<object>(AddTag);
}
public ICommand AddTagCommand { get; private set; }
private void AddTag(object input)
{
//Forward stuff
//Clear TextBox
}
}
Могу ли я каким-либо образом сжать в какой-то код, чтобы сделать TagId.Clear()
?
Имущество для '' Text'' звучит как путь. Что мне делать с UnityContainer? Мне нужно иметь доступ к нему как-то ... –
Для чего это нужно? Если вам нужно это сделать 'Container.Resolve()', скорее добавьте 'IMyTagFactory', который имеет метод CreateTag. –
Haukinger
Это шаблон, на который вы ссылаетесь, исправить: http://www.dofactory.com/net/factory-method-design-pattern. Мне нужен контейнер, чтобы получить все мои разные намерения в модели. Поскольку я делаю это во-первых, представление создает модель представления, которая создает модель, которая делает вещи для меня. Возможно, я неправильно понял, как использовать контейнер ... –