首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在expression blend中使用ListBoxItems?

如何在expression blend中使用ListBoxItems?
EN

Stack Overflow用户
提问于 2011-07-11 22:32:04
回答 1查看 358关注 0票数 0

我有一个问题,我在extression中创建了一个ListBoxItem,它有一个StackPanel,其中包含一个ImageTextBlock

问题是,我不知道如何设置一个属性来访问图像和文本块来设置它。我可以创建新的项目,但如何设置图像网址和文本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-12 04:41:06

XAML需要绑定到数据源中的属性,并且需要设置ListBox的ItemsSource。我在下面包含了生成所示屏幕截图的xaml和.cs。我还包含了一个包含数据的简单类。

代码语言:javascript
复制
        <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应包括:

代码语言:javascript
复制
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,如下所示:

代码语言:javascript
复制
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 ,以确保它们位于设备上。完成的应用程序如下所示:

我希望这能帮到你。

杰森。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6651703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档