如何从父控件的xmal

时间:2017-12-05 20:37:58

标签: wpf xaml mvvm

我不确定如何从父级设置子控件的viewmodel属性。下面我试图访问IntValue,但我收到一个错误,说它在用户控件中不存在。那是因为它存在于与用户控件绑定的viewmodel中。

ChildViewModel.cs

public class ChildViewModel : ViewModelBase
{
    public ChildModel Model { get; private set; }

    public int IntValue
    {
        get
        {
            return Model.IntValue;
        }
        set
        {
            Model.IntValue = value;
            OnPropertyChanged();
        }
    }

    public ChildViewModel()
    {
        Model = new ChildModel();
    }
}

ParentControl.xaml

<UserControl
    x:Class="EmbeddedControls.ParentControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:EmbeddedControls"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">

    <Grid>
        <local:ChildControl IntValue="4">
    </Grid>
</UserControl>

所以我想在这里做的是在xaml中创建控件时更新IntValue内联。有没有办法做到这一点?提前谢谢。

1 个答案:

答案 0 :(得分:0)

有一些方法可以实现这一目标:

  • 在用户控件中声明Dependency属性。 Here你可以找到一个例子。
  • 通信两个ViewModel,here你可以找到一些例子。

我希望这可以帮到你。