我将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设置为数据源。
有人可以帮忙吗?
答案 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类并创建一个库实体集合,它将更易于管理