2015-11-19 28 views
0

我有兩個clasess,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應該可以直接從代碼隱藏。

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

回答

2

是的,當然。您不需要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的子控件,則可以設置其數據上下文。

+0

我對WPF或XAML沒有任何認識(所以請原諒我的無知),但是OP沒有說他不想使用DataContext? –

+0

我想他是用C#代碼的意思。這是所有XAML。 –

+1

我明白了,那我就不要發表評論了! –