用于图像模板的WPF容器

时间:2010-03-04 21:08:46

标签: wpf database image ribbon

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

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>

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

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您可以非常轻松地自定义wpf中的列表框,以便在其中包含图像,而不是文本。使用ItemTemplate或者如果要更改为控制自身,请使用ControlTemplate。

答案 1 :(得分:0)

<ListBox ItemsSource="{Binding Library}">
  <ListBox.ItemTemplate>
    <DataTemplate>    
         <Image Source="{Binding Path=url}" />
     </DataTemplate>
  </ListBox.ItemTemplate>
 </ListBox>

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

无论如何我不建议使用DataSet绑定,如果为库创建ViewModel类并创建一个库实体集合,它将更易于管理