2013-10-01 61 views

回答

3

如果你打算在很多不同的地方重複使用它,那麼創建一個CustomControl可能會更容易。
這裏是一個小的用戶控制哪些應該做的是:

<UserControl x:Class="PhoneApp1.ImageWithLoading" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" 
    d:DesignHeight="480" d:DesignWidth="480" 
      x:Name="myImageWithLoading"> 

    <Grid x:Name="LayoutRoot" > 
     <Image x:Name="temporaryImage" Source="/Assets/Loading"/> 
     <Image Source="{Binding Source,ElementName=myImageWithLoading}" ImageOpened="RemoteImage_OnLoaded"/> 
    </Grid> 
</UserControl> 



public partial class ImageWithLoading : UserControl 
{ 
    public static readonly DependencyProperty SourceProperty = 
     DependencyProperty.Register("Source", typeof (ImageSource), typeof (ImageWithLoading), new PropertyMetadata(default(ImageSource))); 

    public ImageSource Source 
    { 
     get { return (ImageSource) GetValue(SourceProperty); } 
     set { SetValue(SourceProperty, value); } 
    } 
    public ImageWithLoading() 
    { 
     InitializeComponent(); 
    } 

    private void RemoteImage_OnLoaded(object sender, RoutedEventArgs e) 
    { 
     temporaryImage.Visibility = Visibility.Collapsed; 
    } 
} 
+0

謝謝回答:) –

+0

謝謝您的回答。它對我來說非常合適。我爲'ImageBrush'嘗試同樣的事情。我有一個** Ellipse **。在'Ellipse.Fill'屬性中,我添加了ImageBrush。我怎樣才能將你的代碼用於'ImageBrush'? –

2

另一種選擇可能是建立在你的默認樣式網頁中的圖片默認樣式像這樣

<Style TargetType="Image"> 
    <Setter Property="Source" Value="/Assets/Load.jpg"/> 
</Style> 

,只是設置源當圖像準備

相關問題