2014-03-30 150 views
0

我得到了一個userControl,並且我想從包含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}"/> 

比我用我的用戶在我的網頁和我嘗試設置圖像源,但它不起作用

<UC:TruckFormUC x:Name="truckForm" 
ButtonSource="../../../Assets/truck-512.png"/> 

非常感謝


用戶控件和頁面都在同一個文件夾中。

+0

您不應該需要依賴項屬性。只有inotiftypropertychanged被更改。這可能有所幫助:http://stackoverflow.com/questions/19021149/windows-phone-8-image-binding – WiredPrairie

+0

我的用戶控件不僅在一個按鈕,我怎麼能從其他頁面設置ButtonSource屬性?我不能使用 ArghArgh

+0

UserControls可以接受來自當前數據上下文的綁定。它不需要「通過」。 – WiredPrairie

回答

0

您的綁定正在尋找DataContext對象上的ButtonSource屬性。如果你想綁定到你的UserControl,你應該使用相對綁定。

<Image x:Name="imgIcon" Source="{Binding 
RelativeSource={RelativeSource FindAncestor, AncestorType=UC:TruckFormUC}, 
Path=ButtonSource}"/> 

RelativeSource標記擴展MSDN文章瞭解更多信息

0

你也應該能夠使用元素結合。

<Image x:Name="imgIcon" Source="{Binding ElementName=truckForm, Path=ButtonSource}"/>