我的
ListView
View
:
public class TileView : ViewBase
{
public DataTemplate ItemTemplate { get; set; }
public ImageSource IconSource { get; set; } = new BitmapImage(new Uri("../Resources/umf.png", UriKind.Relative));
protected override object DefaultStyleKey => new ComponentResourceKey(GetType(), "TileView");
protected override object ItemContainerDefaultStyleKey => new ComponentResourceKey(GetType(), "TileViewItem");
}
哪个用下一个
DataTemplate
<local:TileView>
<local:TileView.ItemTemplate>
<DataTemplate>
<StackPanel>
<Image
Source="{Binding IconSource, RelativeSource={RelativeSource Mode=TemplatedParent}}"
/>
</StackPanel>
</DataTemplate>
</local:TileView.ItemTemplate>
</local:TileView>
我想为所有项目显示一个图像,因此在中创建了一个属性
类别:
public ImageSource IconSource { get; set; } =
new BitmapImage(new Uri("../Resources/umf.png", UriKind.Relative));
并尝试从模板中引用它:
<Image Source="{Binding IconSource,
RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
但是得到了错误
在“对象”“ContentPresenter”上找不到“IconSource”属性
DataItem='ContentPresenter'(名称='');目标元素为“图像”
(名称=“”);目标属性为“源”(类型为“ImageSource”)
Source="{Binding IconSource,
RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type local:TileView}}}"
我明白了
System.Windows.Data错误:4:找不到与绑定的源
参考“相对资源查找器”,
AncestorType='ClientWPF.Controls.TileView',AncestorLevel='1'。
BindingExpression:Path=IconSource;DataItem=null;目标元素是
“图像”(名称=“”);目标属性为“源”(类型为“ImageSource”)
当然,我可以将一个图像转换成数据模型,但我不喜欢这种方式,原因很明显。
那我怎么才能参考呢
ItemSource
财产