【发布时间】:2020-02-01 22:10:47
【问题描述】:
我有一个PlaylistControl(它是一个UserControl)和一个以这种方式声明的变量ShowAlbumText:
public bool ShowAlbumText
{
get => (bool)GetValue(ShowAlbumTextProperty);
set => SetValue(ShowAlbumTextProperty, value);
}
public static readonly DependencyProperty ShowAlbumTextProperty = DependencyProperty.Register("ShowAlbumText",
typeof(bool),
typeof(PlaylistControl),
new PropertyMetadata(true));
并且ShowAlbumText 在PlaylistControl 的xaml 中的ListView.ItemTemplate 中使用这种方式:
<ListView>
<ListView.ItemTemplate>
<DataTemplate x:DataType="data:Music">
<local:PlaylistControlItem DataContext="{x:Bind}" ShowAlbumText="{Binding ShowAlbumText}">
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
但是这个Binding报错了
错误:BindingExpression 路径错误:“ShowAlbumText”属性不存在 在“SMPlayer.Models.Music”上找到。绑定表达式: 路径='ShowAlbumText' DataItem='SMPlayer.Models.Music';目标元素 是'SMPlayer.Controls.PlaylistControlItem'(名称='null');目标 属性是“ShowAlbumText”(类型“布尔”)
那么我如何将ShowAlbumText 绑定到PlaylistControlItem?我了解 ShowAlbumText 不是 Music 的属性(Music 是我的 ViewModel)。这是我的UserControl 的DependencyProperty。一个更普遍的问题,如何将UserControl 中的DependencyProperty 和ItemsSource 中的ViewModel 绑定到DataTemplate?
来源XAML。
来源Csharp Code。
【问题讨论】:
标签: c# xaml uwp win-universal-app dependency-properties