Musisz ustawić właściwość TileMode
jak również Viewport
i ViewportUnits
:
Na przykład
<Window.Background>
<ImageBrush ImageSource="myImage.png"
Viewport="0,0,300,300"
ViewportUnits="Absolute"
TileMode="Tile"
Stretch="None"
AlignmentX="Left"
AlignmentY="Top" />
</Window.Background>
Uwaga: drugi 2 segmenty atrybutu Viewport
wskazania żądanego rozmiaru każdego powtórzenia. Jeśli chcesz wyświetlić cały obraz, powinny to być szerokość i wysokość obrazu.
Przykâadowa: 
Edycja w odpowiedzi na komentarze
Jeśli nie zna rozmiaru obrazu do określenia w nieruchomości Viewport
, można użyć Binding
ze związkiem IValueConverter
obliczyć go z obrazu. Jestem przekonany, że musi istnieć lepszy sposób robienia tego, ale jeszcze nie znalazłem!
XAML:
<Window.Resources>
<local:Converter x:Key="Converter" />
</Window.Resources>
<Window.Background>
<ImageBrush ImageSource="myImage.png"
ViewportUnits="Absolute"
TileMode="Tile"
Stretch="None"
AlignmentX="Left"
AlignmentY="Top"
Viewport="{Binding ImageSource, RelativeSource={RelativeSource Self}, Converter={StaticResource Converter}}"/>
</Window.Background>
konwerter Wartość:
public class Converter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var source = (ImageSource)value;
return new Rect(0,0,source.Width, source.Height);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
jestem - Ale to nie działa –
Jeff
@Jeff - Nie widziałem tego wcześniej, ale musisz ustawić Viewport i ViewportUnits - Zaktualizowałem odpowiedź, aby odzwierciedlić tę –
(+1) Lepszą odpowiedź niż moje, wciąż używając ImageBrush. –