0

値を設定できる小さなダイアログがあります。このダイアログのビューには、1つのTextBoxと2つのボタンがあります。textbox.TextをViewModelのプロパティTbTextにバインドしています。ビヘイビアーを通じて、ビューモデルからビューを閉じます。このダイアログを開くためのコードは次のようになります。

AddLineDialog dialog = new AddLineDialog();
bool? result = dialog.ShowDialog();
if(result.HasValue && result.Value)
{
//Here i need the Text from the closed dialog
}
...

ダイアログを閉じた後、プロパティTbTextの値にアクセスする必要があります。どうすればこれを達成できますか?

4

2 に答える 2

2

ViewModelまたは任意のクラスをDialogのDatacontextにバインドできます。

    AddLineDialog dialog = new AddLineDialog();
    var vm = new LineDialogViewModel();
    dialog.DataContext = vm;

次に、テキストボックスをクラスのプロパティにバインドします

    <textbox Value="{Binding MyProperty}">

この後、あなたはあなたのクラスを読むことができます

    if(dialog.ShowDialog())
    {
       var value = vm.MyProperty;
    }
于 2013-01-29T08:57:30.797 に答える
0

ソースでINotifyPropertyChangedインターフェイスを使用すると、テキストボックスのバインディングは次のようになります。

<TextBox Text={Binding Path=Name, 
                            Mode=TwoWay, 
                            UpdateSourceTrigger=PropertyChanged} />

これは双方向のバインディングであったため、ユーザーがソースプロパティで更新されたデータを入力するたびに。このデータが必要な場合は、バインドに使用するモデルプロパティからアクセスできます。

上記の解決策があなたの問題を解決するのに役立つことを願っています

于 2013-01-29T09:12:06.647 に答える