在UserControl按钮中设置图像源

时间:2014-03-30 13:31:36

标签: c# user-controls windows-runtime winrt-xaml

我有一个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和页面位于同一文件夹中。

2 个答案:

答案 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}"/>