MVVMモデルを使用してプロジェクトを作成し、ビューファーストの手法でプロジェクトを作成しました。MVVMのビューを制御する
私はTextBox
からデータを渡すためにButton
と一緒に、私のXAMLコードでTextBox
を持っている:私はボタンをクリックすると
<!-- View - XAML code -->
<TextBox
MinWidth="30"
Name="TagId"/>
<Button
Command="{Binding AddTagCommand}"
CommandParameter="{Binding Text, ElementName=TagId}"
Content="Add"/>
、私はTextBox
はクリアしたいです。 Prism manualによれば、いくつかの場合において
、ビハインドコードは、そのような複雑なアニメーションのように、拡張可能アプリケーションマークアップ言語(XAML)で表現することが困難又は非効率的である視覚的な動作を実装するUIロジックコードを含んでいてもよいですまたはビューの一部であるビジュアル要素をコードが直接操作する必要がある場合です。
ここではコードの背後にあり、viewmodelです。
//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()
を行うことができますか?
「テキスト」のプロパティは、行く方法のように聞こえます。それでは、UnityContainerとは何をしていますか?私は何とかそれにアクセスできるようにする必要があります... –
何のためにそれが必要ですか? 'Container.Resolve()'を実行する必要がある場合は、 'CreateTag'メソッドを持つ' IMyTagFactory'を注入してください。 –
Haukinger
これはあなたが参照している正しいパターンです:http://www.dofactory.com/net/factory-method-design-pattern。私は、モデル内のすべての異なる次元を得るためにコンテナが必要です。私は最初にビューを行うので、ビューはビュー・モデルを作成し、モデルを作成します。これは私のためのものです。私はコンテナをどのように使用すべきか誤解しているかもしれません... –