我有一个问题,我在extression中创建了一个ListBoxItem,它有一个StackPanel,其中包含一个Image和TextBlock。
问题是,我不知道如何设置一个属性来访问图像和文本块来设置它。我可以创建新的项目,但如何设置图像网址和文本?
发布于 2011-07-12 04:41:06
XAML需要绑定到数据源中的属性,并且需要设置ListBox的ItemsSource。我在下面包含了生成所示屏幕截图的xaml和.cs。我还包含了一个包含数据的简单类。
<ListBox x:Name="myItems">
<ListBox.ItemTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal">
<Image Source="{Binding image}" Margin="5" />
<TextBlock Text="{Binding myName}" VerticalAlignment="Center" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>MainPage的.cs应包括:
public partial class MainPage : PhoneApplicationPage
{
ObservableCollection<dataItem> items;
public MainPage()
{
InitializeComponent();
items = new ObservableCollection<dataItem>();
addItems();
this.myItems.ItemsSource = items;
}
private void addItems()
{
items.Add(new dataItem() { myName = "Jason", image = "1.png" });
items.Add(new dataItem() { myName = "Joanne", image = "2.png" });
}
}我的数据对象名为dataItem,如下所示:
public class dataItem : INotifyPropertyChanged
{
private string _name = "";
public string myName
{
get
{
return _name;
}
set
{
if (value != _name)
{
_name = value;
NotifyPropertyChanged("myName");
}
}
}
private string _image = "";
public string image
{
get
{
return _image;
}
set
{
if (_image != value)
_image = value;
NotifyPropertyChanged("image");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}我已经实现了INotifyPropertyChanged,以确保在向数据源(dataItem)添加新项时更新UI。图像需要作为content添加,并且应始终为Copy ,以确保它们位于设备上。完成的应用程序如下所示:

我希望这能帮到你。
杰森。
https://stackoverflow.com/questions/6651703
复制相似问题