Hier ist eine einfache WPF-Anwendung, die das Problem demonstriert:
Code: Select all
Code: Select all
public partial class MainWindow : Window
{
private InlineUIContainer container = new InlineUIContainer(new Border()
{
Child = new Image()
{
Source = new BitmapImage(new Uri("pack://application:,,,/Smiley.png"))
},
Background = Brushes.Red
});
public MainWindow()
{
InitializeComponent();
tb.Inlines.Add(container);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (tb.Inlines.Count == 0)
{
tb.Inlines.Add(container);
}
else
{
tb.Inlines.Clear();
}
}
}
Code: Select all
Smiley.pngEinige Beispiele, die das Problem zeigen:
Erstens die Größe in voller Breite ohne Einstellung von StretchDirection:
Code: Select all

Jetzt mit der StretchDirection-Eigenschaft auf DownOnly gesetzt. Zunächst wird das Bild korrekt angezeigt:

Wenn Sie die Umschalttaste zweimal drücken, um das Bild zu entfernen und dann erneut hinzuzufügen, wird das Bild in der richtigen Größe von 100 x 100 Pixel angezeigt, nimmt jedoch die gesamte Breite des TextBlocks ein:

Das Projekt, in dem ich auf diesen Fehler stoße, ist weitaus ausgefeilter als dieses Beispiel und bringt Einschränkungen hinsichtlich der Lösung des Problems mit sich. Wenn Sie die StretchDirection-Eigenschaft für das Bild selbst festlegen, kann es bei jeder Anzeige korrekt gerendert werden. Das gelingt mir jedoch nicht. Alle Bild-Eigenschaften müssen in einem Stil festgelegt werden. Das Entfernen/Hinzufügen der Inlines zum TextBlock ist funktionell dasselbe wie das Umschalten der Sichtbarkeit, aber in meinem Fall wechsle ich zwischen mehreren Sätzen von Inlines, anstatt nur zu entfernen und hinzuzufügen, sodass jede Lösung, die nicht die direkte Manipulation der Inlines-Eigenschaft beinhaltet, nicht verwendbar ist. Wenn die Eigenschaft Inlines gelöscht und mit einem einzigen Klick auf die Schaltfläche hinzugefügt wird, tritt dieses Problem nicht auf. Aufgrund der Notwendigkeit, zwischen mehreren Sätzen von Inlines zu wechseln, ist dies jedoch auch keine brauchbare Lösung.
Gibt es Hinweise darauf, warum dies geschieht und was getan werden könnte, um das Problem mit den gegebenen Einschränkungen zu beheben?
Mobile version