2014-12-09 17 views
0

我有兩個類(classVM和class1)。在我的班級1中,我從視圖中獲得了一個參數。這個意義上的一切都有效。從類發送屬性到VM

但是我需要將該參數傳遞給classVM,而無需在class1中創建classVM的實例。

我應該怎麼做呢?


編輯:

參數(它是一個屬性)獲取從視圖中的行爲填充。 一旦該屬性被填充,VM中的另一個屬性需要填充參數/屬性。


編輯:

XAML

<dataContext:ItemTemplateSelectorClass> 
    <dataContext:ItemTemplateSelectorClass.StringTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Description}" Height="25" Width="75"/> 
       <TextBox Text="{Binding Value}" Height="23" Width="100"> 
        <i:Interaction.Behaviors> 
         <dataContext:TextBoxBehavior Parameter="{Binding Description}"/> 
        </i:Interaction.Behaviors> 
       </TextBox> 
      </StackPanel> 
     </DataTemplate> 
    </dataContext:ItemTemplateSelectorClass.StringTemplate> 

在TextBoxBehavior的參數是一個附加屬性,我創建填補。描述和值綁定在另一個類中。我將不同類型的屬性,方法和命令分成不同的類進行錯誤處理(我不知道這是做什麼的最好方法,但這是我必須做的)。對行爲的綁定工作正常。

XAML的datacontext

<Window.DataContext> 
    <dataContext:FieldsModel x:Name="dataContext" /> 
</Window.DataContext> 

VM物業

private object selectedField; 
    public object SelectedField { 
     get { 
      return selectedField; 
     } 
     set { 
      if (selectedField != value) { 
       selectedField = value; 
       SetPropertyChanged("SelectedField"); 
      } 
     } 
    } 
+0

您可以使用雙向多數據綁定,也可以將視圖內的控件綁定到ViewModel – 2014-12-09 16:03:39

+0

您做錯了什麼。退後一步,瞭解更多信息,然後再回到此處。 – Will 2014-12-09 18:20:04

回答

0

你不應該存儲在視圖,但在模型中的價值;或者如果「參數」(可能是你的意思是屬性)來自視圖中控件內的某個屬性,則將其複製到視圖模型。

+0

首先被填充的屬性在class1中。然後需要填充的屬性在classVM中。這兩個類都具有可以填充的屬性。我不能移動這些屬性,他們必須留在各自的班級。 – 2014-12-09 13:40:20

+0

我想我缺乏一些信息給這種情況下的專用答案。既然你想在虛擬機中存儲一個屬性(我應該假設它已經完成),爲什麼不使用這個引用呢? – 2014-12-09 13:50:54

+0

該物業已經建成。只需要設置。當你說引用它時,你究竟是什麼意思? – 2014-12-09 14:21:26