【发布时间】:2011-01-05 16:04:05
【问题描述】:
如何从ResourceDictionary 内绑定到UserControl 的属性?我希望我在资源中声明的对象具有与它包含的 UserControl 相同的 DataContext:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Some.Namespace"
DataContext="{Binding Path=ViewModel, RelativeSource={RelativeSource Self}}">
<UserControl.Resources>
<local:SomeClass
x:Key="SomeClass"
DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
</UserControl.Resources>
</UserControl>
在运行时出现错误:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='UserControl', AncestorLevel='1''. BindingExpression:Path=DataContext; DataItem=null; target element is 'SomeClass' (Name=''); target property is 'DataContext' (type 'Object')
【问题讨论】:
-
直接在代码隐藏中设置 DataContext 工作,但我想要一个 XAML 解决方案... ((SomeClass)this.Resources["SomeClass"]).DataContext = viewmodel;跨度>
-
我认为继承上下文可能与这个问题有关...blogs.msdn.com/nickkramer/archive/2006/08/18/705116.aspx
标签: wpf xaml binding resourcedictionary