【发布时间】:2016-01-22 22:19:41
【问题描述】:
我的 XAML 无法绑定,我不明白为什么
使用 MVVM,我的 MyView.xaml 中有以下代码
<Expander Header="{Binding ThresholdName}" IsExpanded="False" >
<properties:PropertiesVm Name="{Binding ThresholdName}" />
</Expander>
这有一个 MyViewModel.cs 的 DataTemplate
如您所见,我使用了 ThresholdName 两次。当我运行我的应用程序时,我可以看到Expander 的Header 中的ThrehsoldName,表明此时绑定很好。问题是绑定到我的“属性”对象。
属性视图是
<Grid>
<TextBlock Text="{Binding Name}" />
</Grid>
ViewModel(继承自DependancyObject)是
public static readonly DependencyProperty NameProperty = DependencyProperty.Register("Name", typeof(string), typeof(PropertiesVm));
public string Name
{
get { return (Convert.ToString(GetValue(NameProperty))); }
set { SetValue(NameProperty, value); }
}
我得到的错误信息是
System.Windows.Data 错误:2:找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。绑定表达式:路径=时间;数据项=空;目标元素是“PropertiesVm”(HashCode=6494098);目标属性是“名称”(类型“字符串”)
在我的字典中,我将 DataTemplate 设置为
<DataTemplate DataType="{x:Type viewModel:PropertiesVm}">
<view:PropertiesView />
</DataTemplate>
This post 建议添加 x:Name 但这没有帮助
为什么我的属性视图模型中的属性Name 永远不会被设置?或者我只能使用 UserControl 来执行此操作,绑定到后面的代码?
【问题讨论】:
-
stackoverflow.com/questions/29916756/… 如果您想使用具有依赖属性的用户控件,请勾选此项
-
@blindmeis,谢谢你,这是很好的信息,但我没有在我的 userControl 中设置 DataContext,它自然地从我认为的父级继承它
-
和@blindmeis,同样的问题仍然存在......
-
用户控件中与 DP 的绑定应始终具有 ElemenName 绑定或 RelativSource 绑定。我更喜欢第一个。我在你的 xaml 中没有看到这个。如果您有绑定问题,请使用 Snoop。您可以在运行时检查您的 Datacontext。