簡體   English   中英

如何在視圖中傳遞參數?

[英]How to pass parameters in view?

我有我稱為文件夾選擇器的 myViewModelIn

   public MyViewModel(IFolderPicker folderPicker)
    {
        _folderPicker = folderPicker;
    }

我想將它與子視圖綁定。 我無法通過視圖執行此操作,因為它是參數化的構造函數。 所以我在子視圖的 xaml.cs 中綁定了這個上下文

public ChildView(MyViewModel vm )
{
    InitializeComponent();
    BindingContext= vm;
}

這就是我在父視圖中添加子視圖的方式

  <view:ChildView  Grid.Column="0" Grid.RowSpan="4"></view:ChildView>

現在我有一個父視圖,我必須在其中設置這個子視圖。 在父視圖中添加此子視圖時,出現錯誤嚴重性代碼說明項目文件行抑制 State 錯誤 XFC0004 缺少“DemoApp.MVVM.View.ChildView”的默認構造函數。 DemoApp D:\Priti\Samples\DemoApp\DemoApp\MVVM\View\ParentView.xaml 45
我怎樣才能做到這一點?

當你像這樣實例化 xaml 中的對象時

<view:ChildView  Grid.Column="0" Grid.RowSpan="4"></view:ChildView>

那么您的 class ChildView需要默認構造函數(沒有任何參數的構造函數)。 否則 .NET 框架不知道如何實例化你的對象。

您的問題的一個可能解決方案是將視圖 model(希望設置為父控件的DataContext )以及子控件的DataContext的方法。 盡管如此,您必須使用參數刪除 ChildView 構造函數(因此將再次使用默認構造函數)

<view:ChildView DataContext="{Binding DataContext}" Grid.Column="0" Grid.RowSpan="4"></view:ChildView>

希望,我的解釋是可以理解的並且會起作用:)

暫無
暫無

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

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