Ich habe eine ListBox dessen ItemSource ist eine Liste, in der X ist definiert als:WPF: Eine Möglichkeit zur Quelle von ListBox Bindung
public class X
{
public string FullPath { get; set; }
}
Mein Viewmodel ist
public class ViewModel
{
public List<X> MyList { get; set; }
public X MyItem { get; set; }
public ViewModel()
{
MyList = new List<X>
{
new X { FullPath = "q:\\temp\\x1.png"},
new X { FullPath = "q:\\temp\\x2.png"}
};
}
}
Und XAML:
<Window x:Class="Bind1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Bind1"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:ViewModel/>
</Window.DataContext>
<StackPanel>
<Image Source="{Binding MyItem.FullPath, Mode=OneWay}" HorizontalAlignment="Left" VerticalAlignment="Top" Stretch="None"/>
<ListBox ItemsSource="{Binding MyList}"
SelectedItem="{Binding MyItem, Mode=OneWayToSource}"
SelectionMode="Single">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding FullPath}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Window>
Dies funktioniert, wenn ich die Tastatur nach oben und nach unten Pfeile in der ListBox verwendet (das Bild aus dem Pfad in der ListBox angezeigt in th erscheint e <Image>). Wenn ich jedoch mit der Maus auf ein Objekt klicke, wird das Element, auf das ich klicke, nicht in der ListBox ausgewählt (der Mausklick hat keine Wirkung). Das korrekte Bild wird sehr kurz im Bild angezeigt (ein Bruchteil einer Sekunde), dann wird das Originalbild angezeigt. Was mache ich falsch?
Ich kann Ihr Problem nicht reproduzieren. Mit dem gegebenen Code läuft es perfekt auf meinem System. – Lauraducky
Ich habe gerade Ihren Code in meinem System ausgeführt und es funktioniert gut, sowohl Klick-und Tastaturnavigationsereignis funktioniert gut. Sie müssen möglicherweise eine Breite und Höhe für Ihr Bild festlegen und strecken, um zu füllen, falls die ursprüngliche Breite und Höhe des Bildes sehr groß ist. –