Silverlight - ملزمة صور إلى مستطيل ملء
-
02-10-2019 - |
سؤال
يخبرني المزيج 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();
}
}
}
لا تنتمي إلى StackOverflow