簡體   English   中英

Xamarin Forms - Xaml 元素注入到每一頁

[英]Xamarin Forms - Xaml Element injected to every page

我正在尋找一種在使用 Xamarin Forms Shell 時將元素 (DXPopup) 注入每個頁面的方法。

我最初的想法是為 Tabbar 創建一個自定義渲染器並在 tabbar 上方注入彈出窗口。 但是,當我的選項卡包含在 FlyoutItem 中時,我遇到了障礙。 然后,我考慮了一個用於 ContentView 的自定義渲染器並添加了一個子元素,盡管遇到了 Android 想要 android 視圖的攔截器。

如何最好地解決這個問題?

期望的結果:DXpopup 元素添加到每個頁面,因此我們可以調用一個通用的顯示方法(通過中介類的消息)

我使用上面 Jason 建議的路線解決了這個問題:

Basepage - 有一個控制模板 Control Template 如:

<ControlTemplate x:Key="BasePageTemplate">
        <StackLayout VerticalOptions="FillAndExpand">
            //your element (in my case a DXPopup
            <ContentPresenter VerticalOptions="FillAndExpand"/>
        </StackLayout>
</ControlTemplate>

注冊到綁定上下文更改(在基頁的代碼后面):BindingContextChanged += SetBindingContext;

這是為了更新到消費頁面視圖模型。

所述 viewmodel 將有一個 baseViewmodel,我在其中注冊了注入的元素,如下所示:

private void SetBindingContext(object sender, EventArgs e)
    {
        if (BindingContext is not ViewModelBase baseVM) return;

        var dxPopUp = GetTemplateChild("ElementName");
        baseVM.DxPopUp = dxPopUp as DXPopup;
    }

這反過來又允許我使用視圖模型基礎與元素交互(在我的例子中顯示它)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM