سؤال

يخبرني المزيج 4 أن هذا علامة غير صالحة ولا تخبرني لماذا:

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

أقوم بسحب البيانات من خلاصة Twitter ، وحفظها على صور ، ثم ربطها بفرشاة الصور (كما هو موضح أدناه) لاستخدامها كملء لمستطيل. هنا المزيد من السياق:

<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 UserControl ، والذي يستخدم داخل تطبيق Silverlight. أي أفكار حول ما يمكن أن تكون المشكلة؟

هل كانت مفيدة؟

المحلول

لا يمكن تطبيق الربط على صور ImageBrush ، أو هكذا يبدو. أواجه مشكلة مماثلة وأبحث عن بدائل.

نصائح أخرى

لا يمكنك ربط الصور الخاصة بـ ImageBrush ، ومع ذلك يمكنك ربط خاصية 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)}};

هنا تذهب: 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>

blockquote

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";
        }
    }
}

blockquote blockquote

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top