将参数传递给自定义控件ViewModel,MVVM

时间:2013-12-17 21:37:05

标签: wpf xaml mvvm custom-controls viewmodel

我在视图中声明了一个自定义控件。 Control有自己的ViewModel,我在父视图的XAML中声明。我想通过绑定将值传递给这个子ViewModel,但我没有使用依赖属性而宁愿不这样做。有办法解决这个问题吗?或者我需要大量的返工?

声明子ViewModel,包括不起作用的绑定:

<Window.Resources>
    <uc:PagerViewModel x:Key="PagerDataContext" PagesContent="{Binding DisplayedRawData}">
    </uc:PagerViewModel>
<Window.Resources>

自定义控制声明:

   <uc:Pager Grid.Row="1" DataContext="{StaticResource PagerDataContext }"/>

Child ViewModel重用代码:

    public string PagesContent
    {
        get
        {
            return _pagesContent;
        }
        set
        {
            _pagesContent = value;
            OnPropertyChanged("PagesContent");
        }
    }
    private string _pagesContent = string.Empty;

1 个答案:

答案 0 :(得分:0)

任何绑定目标都必须是依赖项属性 - 您无法将绑定到视图模型属性。根据您提供的内容,一种替代方法是在视图上创建依赖项属性,然后将其传递给视图模型:

<Window.Resources>
    <uc:PagerViewModel x:Key="PagerDataContext" />
<Window.Resources>

因此,在DisplayedRawData控件中声明依赖属性uc:Pager;在其PropertyChangedEventHandler内,将新值传递给视图模型:

((PagerViewModel)DataContext).PagesContent = DisplayedRawData