コンテキストExrin IMasterDetailContainer IsPresentedは効果がありません、ナビゲーション引き出し
私はExrinリポジトリからExrinSampleMobileAppを使用していますを非表示にする方法について説明します。スワイプでナビゲーション用の引き出しを表示すると、引き出しが正しく表示されます。私はreturn new NavigationResult(Stacks.Main, Main.Settings);
にMenuOperationを修正した後、それを正しくナビゲートしますが、引き出しが上に残っている(、[設定]ナビゲーションをクリックする。
私はXamarin MasterDetailPageのIsPresentedは引き出しを隠すために偽に設定する必要があることを知っている。私も発見その、この目的のためにこのような理由のために(もIsPresented呼ばれる)プロパティを提供して抽象化IMasterDetailContainerがある
質問
しかし疑問があります。いつどこでこのプロパティをfalseに設定するために、どのようにそれにアクセスする(私はIMasterDetailContainerにアクセスする方法を意味する
完成したAutofac BuilderをIMasterDetailContainerの実装に追加できないので、静的な参照を介して渡すことにしました。これを行うには良い方法があるかもしれないので、
// Note: This code from the otherwise unchanged ExrinSampleMobileApp from the Exrin repository
public class MenuOperation : ISingleOperation
{
public static IMasterDetailContainer Mdc;
private IMasterDetailContainer _masterDetailContainer;
public MenuOperation(IMasterDetailContainer masterDetailContainer)
{
_masterDetailContainer = masterDetailContainer;
}
public Func<object, CancellationToken, Task<IList<IResult>>> Function
{
get
{
return (parameter, token) =>
{
// _masterDetailContainer = false
// Shame, but no DI worked, so this is only for diagnostics (static):
// This set really false, however the drawer remains and navigation freezed.
Mdc.IsPresented = false;
return new NavigationResult(Stacks.Main, Main.Settings);
// Original navigation was:
//return new NavigationResult(Containers.Main, Regions.Main, Stacks.Second, Second.Detail);
};
}
}
ありがとうございました。私は2つの問題を扱っています。まず、プロパティにアクセスする方法、次にアクセスできる場合は、期待どおりに機能しない方法です。静的なことは、「私がアクセスできたら、それが何であるか」と試してみるだけで、一時的にはきれいになりました。 –
私は何かを持っています...それは通常のUIスレッドです。そのプロパティを設定するのは、UIスレッドでのみ可能です。奇妙なことが起こらない限り...(Device.BeginInvokeOnMainThread) –