Frage

Blend 4 sagt mir, dies ist ungültig Markup und seine sagt mir nicht, warum:

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

Ich ziehe Daten von einem Twitter-Feed zu einem Image Speicher und Bindung es dann zu einem ImageBrush (wie unten zu sehen) als die Fill für einen Rectangle verwendet werden. Hier ist mehr Kontext:

<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>

Ich verwende diese innerhalb eines Silverlight-Usercontrol, die innerhalb einer Silverlight-Anwendung verwendet wird. Alle Ideen, was das Problem sein könnte?

War es hilfreich?

Lösung

Die Bindung kann nicht auf eine ImageBrush des Image angewendet werden, oder so scheint es. Ich bin ein ähnliches Problem mit und auf der Suche nach Alternativen.

Andere Tipps

Sie können nicht binden an die Image eines ImageBrush jedoch können Sie die Fill-Eigenschaft einer Form binden. So die folgenden Werke:

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

Mit einer Klasse etwas wie folgt aus:

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

und Code hinter wie folgt aus:

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

Hier gehen Sie: 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();
        }
    }
}

eingeben Bild Beschreibung hier

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top