我有一个userControl,我想从包含userControl的页面设置图像按钮。
如果我以这种方式在usercontrol中设置我的按钮图像它可以工作,但我无法改变。
<Button blablabla>
<Image Source="../../../Assets/truck-512.png"/>
</Button>
所以我从代码隐藏
定义一个属性 public ImageSource ButtonSource
{
get { return (ImageSource)GetValue(SourceProperty); }
set { SetValue(SourceProperty, value); }
}
// Using a DependencyProperty as the backing store for Source. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SourceProperty =
DependencyProperty.Register("Source", typeof(ImageSource), typeof(TruckFormUC),null);
在我的userContol xaml中,我将我的图像设置如下
<Image x:Name="imgIcon" Source="{Binding Path=ButtonSource}"/>
比我在我的页面中使用我的userControl,我尝试设置图像源,但它不起作用
<UC:TruckFormUC x:Name="truckForm"
ButtonSource="../../../Assets/truck-512.png"/>
非常感谢
userControl和页面位于同一文件夹中。
答案 0 :(得分:0)
您的绑定正在DataContext对象上查找ButtonSource属性。如果要绑定到UserControl,则应使用相对绑定。
<Image x:Name="imgIcon" Source="{Binding
RelativeSource={RelativeSource FindAncestor, AncestorType=UC:TruckFormUC},
Path=ButtonSource}"/>
有关详细信息,请参阅RelativeSource标记扩展MSDN文章
答案 1 :(得分:0)
您还应该能够使用元素绑定。
<Image x:Name="imgIcon" Source="{Binding ElementName=truckForm, Path=ButtonSource}"/>