我在视图中声明了一个自定义控件。 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;
答案 0 :(得分:0)
任何绑定目标都必须是依赖项属性 - 您无法将绑定到视图模型属性。根据您提供的内容,一种替代方法是在视图上创建依赖项属性,然后将其传递给视图模型:
<Window.Resources>
<uc:PagerViewModel x:Key="PagerDataContext" />
<Window.Resources>
因此,在DisplayedRawData
控件中声明依赖属性uc:Pager
;在其PropertyChangedEventHandler
内,将新值传递给视图模型:
((PagerViewModel)DataContext).PagesContent = DisplayedRawData