WPF中如何把listBox选中的对象绑定在图片的Source上

对象的定义如下:
class img
{
public String Name { get; set; }
public String URL { get; set; }
public img(String name,String url) {
this.Name = name;
this.URL = url;
}
}
XAML代码:
<Grid>
<Button Content="Clear" ">
<ListBox Name="listBox" />
<Image x:Name="img" Source="Assets/img/Alpaca.jpg" />
<TextBlock x:Name="tb" HorizontalAlignment="Left" Margin="276,280,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="{Binding SelectedIndex,ElementName=listBox}"/>

</Grid>
XAML对应的后台代码:
public partial class MainWindow : Window
{
List<img> listImg = new List<img>();
public MainWindow()
{
listImg.Add(new img("Alpaca", @"Assets\img\Alpaca.jpg"));
listImg.Add(new img("Elephas", @"Assets\img\Elephas.jpg"));
listImg.Add(new img("Giraffa", @"Assets\img\Giraffa.jpg"));
listImg.Add(new img("LemurCatta", @"Assets\img\LemurCatta.jpg"));
listImg.Add(new img("panda", @"Assets\img\panda.jpg"));
listImg.Add(new img("pen", @"Assets\img\pen.jpg"));
InitializeComponent();

this.listBox.ItemsSource = listImg;
this.listBox.DisplayMemberPath = "Name";//Source="{Binding ElementName=listBox,Path=SelectItem.URL}"
//this.img.SetBinding(this.listBox.SelectedItem,new Binding()
//tb.Text = listBox.SelectedIndex.ToString();

}
}

你的意思是在listbox选中不同的图片路径,在image控件预览?
可以绑定,但是要注意你选中的值是string类型的,而图片的source是BitmapImage,所以要定义一个Converter来转换。追问

不用数据转换不行吗?

追答

那就在你的img类里面加个属性,BitmapImage类型,绑定到此属性。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-04
对象的定义如下:
class img
{
public String Name { get; set; }
public String URL { get; set; }
public img(String name,String url) {
this.Name = name;
this.URL = url;
}
}
XAML代码:
<Grid>
<Button Content="Clear" ">
<ListBox Name="listBox" />
<Image x:Name="img" Source="Assets/img/Alpaca.jpg" />
<TextBlock x:Name="tb" HorizontalAlignment="Left" Margin="276,280,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="{Binding SelectedIndex,ElementName=listBox}"/>

</Grid>
XAML对应的后台代码:
public partial class MainWindow : Window
{
List<img> listImg = new List<img>();
public MainWindow()
{
listImg.Add(new img("Alpaca", @"Assets\img\Alpaca.jpg"));
listImg.Add(new img("Elephas", @"Assets\img\Elephas.jpg"));
listImg.Add(new img("Giraffa", @"Assets\img\Giraffa.jpg"));
listImg.Add(new img("LemurCatta", @"Assets\img\LemurCatta.jpg"));
listImg.Add(new img("panda", @"Assets\img\panda.jpg"));
listImg.Add(new img("pen", @"Assets\img\pen.jpg"));
InitializeComponent();

this.listBox.ItemsSource = listImg;
this.listBox.DisplayMemberPath = "Name";//Source="{Binding ElementName=listBox,Path=SelectItem.URL}"
//this.img.SetBinding(this.listBox.SelectedItem,new Binding()
//tb.Text = listBox.SelectedIndex.ToString();

}
}
第2个回答  2016-04-03
意思listbox选同图片路径image控件预览
绑定要注意选值string类型图片sourceBitmapImage所要定义Converter转换