簡體   English   中英

如何綁定到在當前類中實例化的類的屬性

[英]How to bind to a property of a class instantiated in the current class

我有兩個分類, MainWindowMainWindow_ViewModel

MainWindow的定義如下:

public partial class MainWindow : Window
{
    static public MainWindow wn;
    public MainWindow_ViewModel mwvm;

    public MainWindow()
    {
        InitializeComponent();
        wn = this;
        mwvm = new MainWindow_ViewModel();
    }
}

MainWindow_ViewModel的定義如下:

class MainWindow_ViewModel
{
    private List<String> _filtros;
    public List<String> filtros
    {
        get
        {
            return _filtros;
        }
    }


    public MainWindow_ViewModel()
    {
        _filtros = new List<String>();
        _filtros.add("Filtro1");
        _filtros.add("Filtro2");
        _filtros.add("Filtro3");
    }
}

請注意,沒有任何靜態方法或屬性。

在MainWindow的XAML中,我有一個想要與mwvm.filtros綁定的mwvm.filtros ,應該直接從后台代碼中使用它們。

  1. 如何不使用DataContext且僅在XAML中實現該目標?
  2. 是否可以從另一個類(即另一個窗口)綁定到以下路徑? MainWindow.wn.mwvm.filtros

當然是。 您不需要C#代碼來綁定視圖模型。 只需在DataContext元素中創建一個對象:

<Window.DataContext>
   <local:MainWindow_ViewModel />
</Window.DataContext>

但是,您必須為本地項目創建一個名稱空間。 完整代碼:

<Window x:Class="Your.Namespace.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:Your.Namespace"
>
    <Window.DataContext>
        <local:MainWindow_ViewModel />
    </Window.DataContext>

除非您將其傳遞給其他WindowControl ,或者將其設置為靜態,否則您不能與之綁定。 如果它是此Window子控件,則可以設置其數據上下文。

暫無
暫無

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

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