我有一个UserControl,它有一个Image和一个Textblock,如下所示:
<Image Stretch="UniformToFill" Source="{Binding Path=ImageURL}"/>
<TextBlock Text="{Binding Path=Title}"/>
在用户控件的.cs中,我有依赖属性来进行绑定:
public string Title
{
get { return (string)GetValue(TitleProperty); }
set { SetValue(TitleProperty, value); }
}
public static readonly DependencyProperty TitleProperty =
DependencyProperty.Register("Title", typeof(string), typeof(MyUserControl), null);
public string ImageURL
{
get { return (string)GetValue(ImageURLProperty); }
set { SetValue(ImageURLProperty, value); }
}
public static readonly DependencyProperty ImageURLProperty =
DependencyProperty.Register("ImageURL", typeof(string), typeof(MyUserControl), null);
public MyUserControl()
{
this.InitializeComponent();
(this.Content as FrameworkElement).DataContext = this;
}
在我的MainPage.xaml中,我在列表中调用它
<ListView Grid.Row="1"
HorizontalAlignment="Center"
Name="ControlsListView">
<ListView.ItemTemplate>
<DataTemplate>
<controls:MyUserControl Margin="20"
Title="{Binding Title}" //works
ImageURL="{Binding ImageURL}"/> //doesn't work
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
然后我从Json.net获取此数据并将其提供给ListView的ItemsSource。它适用于标题,但ImageURL没有,任何人都可以帮助我为什么?
答案 0 :(得分:0)
可能是错误的DataContext,请参阅ReSharper WPF error: "Cannot resolve symbol "MyVariable" due to unknown DataContext"。答案描述了如何使用免费的Snoop实用程序来检测运行时绑定错误。
答案 1 :(得分:0)
默认情况下,UserControl的DataContext未设置为指向后面的代码。
添加:
<UserControl DataContext="{Binding RelativeSource={RelativeSource Self}}">
答案 2 :(得分:0)
也许ImageUrl中的反斜杠让人感到困惑。
您使用的是什么ImageUrl? Json可能将反斜杠解释为转义字符,您可能必须使用双反斜杠对ImageUrl进行编码。