2010-04-27 42 views
0

混合4告诉我,这是不合法的标记和它没有告诉我为什么:Silverlight的 - 绑定到的ImageSource矩形填充

<ImageBrush Stretch="Fill" ImageSource="{Binding Avatar, Mode=OneWay}"/> 

我从Twitter的饲料拉取数据,保存到一个ImageSource的,然后将其绑定到ImageBrush(如下所示)以用作矩形的填充。这里是更多的上下文:

<Rectangle x:Name="Avatar" RadiusY="9" RadiusX="9" Width="45" Height="45" VerticalAlignment="Center" HorizontalAlignment="Center" > 
    <Rectangle.Fill> 
     <ImageBrush Stretch="Fill" ImageSource="{Binding Avatar, Mode=OneWay}"/> 
    </Rectangle.Fill> 
</Rectangle> 

我在一个Silverlight用户控件,这是用于一个Silverlight应用程序内部使用此内部。任何想法可能是什么问题?

+0

这是由方式一个DataTemplate内。 – 2010-04-27 19:57:47

+0

你可以显示阿凡达属性,或至少是签名? – 2010-06-08 15:16:29

回答

0

绑定不能应用于ImageBrush的ImageSource,或者看起来如此。我有类似的问题,并寻找替代品。

0

您无法绑定到ImageBrush的ImageSource,但是您可以绑定到Shape的Fill属性。所以下面的工作:

<Rectangle Name="myRect" Fill="{Binding Avatar}"/> 

随着一类是这样的:

public class AvatarClass 
{ 
    public ImageBrush Avatar { get; set; } 
} 

和后面的代码是这样的:

myRect.DataContext = new AvatarClass{ 
         Avatar = new ImageBrush { 
         ImageSource = new BitmapImage(avatarUri)}}; 
0

在这里你去:WPF/Silverlight的

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:convertor="clr-namespace:WpfApplication1.Converters" 
     Title="MainWindow" Height="350" Width="525"> 

    <Window.Resources> 
     <convertor:RectangleImageFillConvertor x:Key="RectangleImageFillConvertor" /> 
    </Window.Resources> 

    <Grid> 
     <Rectangle HorizontalAlignment="Center" 
        RadiusX="10" 
        RadiusY="10" 
        Width="200" 
        Height="200" 
        Fill="{Binding ImageUrl, Converter={StaticResource RectangleImageFillConvertor}}"/> 
    </Grid> 
</Window> 

块引用

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 

     public string ImageUrl { get; set; } 

     public MainWindow() 
     { 
      InitializeComponent(); 
      this.DataContext = this; 
      ImageUrl = "http://www.deargrumpycat.com/wp-content/uploads/2013/02/Grumpy-Cat1.jpg"; 
     } 
    } 
} 

块引用 块引用

namespace WpfApplication1.Converters 
{ 
    public class RectangleImageFillConvertor : IValueConverter 
    { 

     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      try 
      { 
       return new ImageBrush(new BitmapImage(new Uri(value as string, UriKind.RelativeOrAbsolute))); 
       //if silverlight 
       // return new ImageBrush{ ImageSource = new BitmapImage(new Uri(value as string, UriKind.RelativeOrAbsolute))}; 
      } 
      catch 
      { 
       return null; 
      } 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 
} 

enter image description here