将属性从类发送到VM

时间:2014-12-09 12:43:15

标签: c# wpf mvvm

我有两个类(classVM和class1)。在我的class1中,我从View中获取了一个参数。这种意义上的一切都有效。

但是我需要将该参数传递给classVM而不在class1中创建classVM的实例。

我该怎么做呢?


编辑:

参数(它是一个属性)从视图中的行为填充。 填充该属性后,VM中的另一个属性需要填充参数/ property。


编辑:

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>

虚拟机资源

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

1 个答案:

答案 0 :(得分:0)

您应该将值存储在视图中但不存储在模型中;或者如果'参数'(可能是您的意思是属性)来自视图中控件内的某个属性,请将其复制到视图模型。