私はいくつかの情報を編集できるウィンドウを持っています。保存すると、その情報はデータベースに保存されます。情報を表示する親ウィンドウは、前述のデータベースから情報を取得します。ただし、子ウィンドウを閉じると、情報が更新されます。これを行うための最良の方法は、親ウィンドウのviewmodel(元々情報を取り込むメソッド)からメソッドを呼び出すことです。これを行うための最良の方法は、ビューのコマンドバインディング内のRelativeSource FindAncestor
です。 しかし、ブレークポイントを設定した後、私はdelegateコマンドによって呼び出されたメソッドが決してトリガーされないと判断しました。親のviewmodelで親のビューモデルから親戚の名前でコマンドを呼び出す
<Button x:Name="closeButton" Content="Close"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Width="75"
Margin="403,270,0,-46"
Click="CloseWindows"
Command="{Binding DataContext.MouseDownCommand,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type local:MainWindow}}}"/>
コマンド:ブレークポイントが設定されている
MakeSelection = new DelegateCommand(OnSelectionMade);
方法:
private void OnSelectionMade()
{
ShowDropDown = false;
CarrierList.Clear();
NodeTokenList = BackUpNodeTokenList; //reset list
_populateCarrierListWorker = new BackgroundWorker();
_populateCarrierListWorker.DoWork += new DoWorkEventHandler(PopulateCarrierList);
_populateCarrierListWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler
(PopulateCarrierCompleted);
_populateCarrierListWorker.RunWorkerAsync(_node);
ShowCarrierList = true;
}
親ウィンドウは、子ウィンドウの視覚的祖先ではないため、RelativeSourceを使用して別のウィンドウにバインドすることはできません。 – mm8