将属性从类发送到 VM

本文关键字:VM 属性 | 更新日期: 2023-09-27 18:33:37

我有两个类(classVM 和 class1(。在我的类 1 中,我从视图中获得了一个参数。从这个意义上说,一切都有效。

但是,我需要将该参数传输到类虚拟机,而无需在 class1 中创建类虚拟机的实例。

我应该怎么做?


编辑:

参数(它是一个属性(从视图中的行为填充。填充该属性后,需要使用参数/属性填充 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>

文本框行为中的参数是我创建用于填充的附加属性。说明和值绑定位于另一个类中。我将不同类型的属性、方法和命令分成不同的类以进行错误处理(我知道这不是最好的方法,但这是我必须做的。与行为的绑定工作正常。

XAML 数据上下文

<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");
            }
        }
    }

将属性从类发送到 VM

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