بررسی Navigation در Xamarin.Forms Shell
زمانی که Page های برنامه را ایجاد کردید نیاز است که بتوانیم بین آنها Navigate کنیم. یکی از جذاب ترین قسمتهای Shell، آسانی استفاده کردن از سیستم Navigation با استفاده از Route ها می باشد.
سیستم Xamarin.Forms Shell مربوط به Navigation را با استفاده کردن از Uri ها که میتوانند شامل سه مولفه باشند پیاده سازی میکند. تصویر زیر این سه مولفه را نشان میدهد:
معرفی Route: یک Route نمایانگر مسیری است که content و یا محتوا به عنوان بخشی از سلسله مراتب Shell در آن قرار گرفته است.
مفهوم Page: یک Page در Xamarin.Forms Shell در واقع قسمتی است که از در سلسله مراتب به ویژوال و یا بستری شدن وجود ندارد اما میتواند در Navigation Stack و در هر قسمتی از برنامه درج بشود.
مفهوم Query Parameters و یا پارامترهای کوئری: اینها در واقع پارامترهای هستند که میتوانند به کوئریها تحویل داده شوند تا در زمان Browse کردن برنامه، Page مورد نظر مورد استفاده قرار بگیرد.
بررسی ساختار URI
همانطور که گفته شد Uri که Xamarin.Forms Shell از آن استفاده میکند میتواند از سه عنصر تشکیل شود. و ساختار Route ایجاد شده شبیه به تصویر زیر خواهد بود.
// Route + /page? + QueryParameters = //route/page?queryParameters
Register کردن Route ها
به منظور استفاده کردن از Route ها شبیه دیگر Framework هایی که برای توسعه اپلیکیشنها در دات نت فریم ورک مورد استفاده قرار میگیرند میبایست آنها را Register کنیم.
به منظور Register کردن یک Route میبایست که یک property به نام Route را به همراه نام مربوط به آن Route شبیه چیزی که در کد زیر مشاهده میکنید اضافه کنید:
<Shell>
<FlyoutItem Route="animals">
<Tab Route="domestic">
<ShellContent Route="cats" />
<ShellContent Route="dogs" />
</Tab>
<ShellContent Route="monkeys" />
<ShellContent Route="elephants" />
<ShellContent Route="bears" />
</FlyoutItem>
<ShellContent Route="about" />
</Shell>
مشاهده کردن Route ها
Route هایی که با استفاده از کد قسمت بالا اضافه میشوند به سادگی سلسله مراتب عناصر Parent خود را دریافت میکنند، بنابراین اگر بخواهیم که ساختار سلسله مراتبی Route را بررسی کنیم میتوانیم به تصویر زیر نگاهی بیندازیم:
علاوه براین پس از ایجاد کردن Route ها میبایست Page ها را نیز Register کنیم.
Register کردن Page ها
برای Register کردن Page ها میبایست که خطی که در تصویر زیر مشاهده میکنید را اضافه کنیم:
انواع Route ها
همانطور که ممکن است حدس زده باشید ما میتوانیم در سیستم Xamarin.Forms Shell در Route هایی با انواع مختلف را داشته باشیم. یکی از این نوعها Absolute می باشد با استفاده از Route هایی که به صورت Absolute مشخص میشوند به سادگی میتوانیم به یک Route کاملاً معتبر با استفاده از متد GoToAsync برویم. مثالی از این موضوع در در تصویر زیر نشان داده شده است:
نوع دیگری Route ها، Route های نسبی و یا Relative میباشند در این گونه از Route ها سیستم Navigation در Uri مورد نظر را به صورت نسبی به عنوان پارامتر متد GoToAsync مورد استفاده قرار میدهد. مثالی از این موضوع در کد زیر نشان داده شده است:
منبع: وبسایت پرووید