我有一个有几个按钮的 GridView。其中之一由以下模板定义:
<DataTemplate x:Name="SubjectItemTemplate">
<Canvas Width="340" Height="170" VerticalAlignment="Top">
<Controls:ThreeImageButton HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,0,0,0"
NormalStateImageSource="{Binding NormalImage}"
HoverStateImageSource="{Binding HoverImage}"
PressedStateImageSource="{Binding PressedImage}" Command="{Binding Path=NavigateToUnitsPage}"
CommandParameter="{Binding}" Canvas.Left="0" Canvas.Top="0">
</Controls:ThreeImageButton>
</Canvas>
</DataTemplate>
现在我有一个自定义控件,如您所见,称为 ThreeImageButton。当我单独使用该按钮时,它可以正常工作。但是当我在 DataTemplate 中有它时,它不会将属性绑定到后面的代码。
现在,我有
x:Name="MyThreeImageButton"
在自定义按钮定义中。我像这样连接到代码隐藏:
<TextBlock Text="{Binding ElementName=MyThreeImageButton, Path=NormalStateImageSource}"/>
(这只是显示文本的测试,在实际代码中,我会将图像源分配给元素引用的另一个属性)。
现在,TextBlock 中没有显示任何内容。我应该使用什么正确的绑定语法来访问我的属性?
谢谢!
编辑:我在 InitializeComponent 函数中设置变量,并且在 DependencyProperty 上使用 SetValue。
编辑:让我添加以下信息以更清楚
场景一:在 GridView 的 DataTemplate 中:
<UserControl CustomParameter="Literal Text">
在用户控件中:
<TextBlock Text="{Binding CustomParameter}">
在 UserControl .cs 中:this.DataContext = 这行得通!
场景二:在 GridView 的 DataTemplate 中:
<UserControl CustomParameter="{Binding ValueFromDataItem">
在用户控件中:
<TextBlock Text="{Binding CustomParameter}">
在 UserControl .cs 中:this.DataContext = this nope!