1

我将 sql ce 3.5 数据库中图像的 url 作为字符串存储。我想检索 url 并将它们显示在主应用程序窗口中。这是代码:

DataSet myDataSet;

        private void OnInit(object sender, EventArgs e)
        {

            string connString = Properties.Settings.Default.SystemicsAnalystDBConnectionString;
            OleDbConnection conn = new OleDbConnection(connString);
            OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT url FROM Library;", conn);

            myDataSet = new DataSet();
            adapter.Fill(myDataSet, "Library");
            myListBox.DataContext = myDataSet;
        }

第一个问题是我不认为 onInit 方法被触发了。但我不知道这是什么原因。

第二个问题是 XAML 文件。我需要一个图像容器(例如文本框的列表框),因为我不知道有多少图像,所以我需要某种模板:

                            <DataTemplate>
                                <StackPanel>
                                    <Image Source="{Binding Path=url}" />
                                </StackPanel>
                            </DataTemplate>

但是必须有某种容器将数据上下文设置为数据源。

有人可以帮忙吗?

4

2 回答 2

1

您可以很容易地在 wpf 中自定义列表框以在其中包含图像,而不是文本。使用 ItemTemplate 或者如果您想更改为控制本身,请使用 ControlTemplate。

于 2010-03-04T22:01:52.710 回答
0
<ListBox ItemsSource="{Binding Library}">
  <ListBox.ItemTemplate>
    <DataTemplate>    
         <Image Source="{Binding Path=url}" />
     </DataTemplate>
  </ListBox.ItemTemplate>
 </ListBox>

ListBox 的 DataContext 应该是您的 DataSet。您可以使用 OnLoad 而不是 OnInit

无论如何,我不推荐 DataSet 绑定,如果你为你的图书馆创建 ViewModel 类并创建图书馆实体的集合,它会更易于管理

于 2010-03-04T22:29:56.927 回答