Xyr*_*oid 7 c# xaml gridview microsoft-metro windows-runtime
在我的应用程序中有我的自定义类的gridview.我正在使用自定义数据模板,并且SQLite绑定了值.现在,当用户启动应用程序时,应在gridview/listview中预先选择某些项目(NOT SINGLE).Gridview/listview允许多个选择.如何使用SelectedItem属性实现此目的?
更新:我跟着这个,它对我不起作用.返回0选项.
更新2:我已经发布了代码
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
using (var db = new SQLite.SQLiteConnection(dbpath))
{
lvTags.ItemsSource = db.Table<Database.Tag>(); //lvTags is listview
if (MyList.Count > 0) //MyList is the static list of class "Database.Tag"
{
foreach (var item in MyList)
foreach (var lvitem in lvTags.Items)
if (lvitem.Equals(item))
lvTags.SelectedItems.Add(lvitem);
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新3:
public override bool Equals(object obj)
{
Tag tag = obj as Tag;
if (this.TagID == tag.TagID && this.TagName == tag.TagName)
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
XAML页面
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<ListView x:Name="listView" SelectionMode="Multiple">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding ID}" Margin="0,0,5,0"/>
<TextBox Text="{Binding Title}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
Run Code Online (Sandbox Code Playgroud)
C#
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
LoadData();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
}
ObservableCollection<KiwiItem> sourceColl;
IList<KiwiItem> selectionList;
public void LoadData()
{
var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.sqlite");
// Exec (1)
using (var db = new SQLite.SQLiteConnection(dbPath))
{
db.DropTable<KiwiItem>();
db.CreateTable<KiwiItem>();
db.RunInTransaction(() =>
{
db.Insert(new KiwiItem() { ID = 1, Title = "MyTitle1" });
db.Insert(new KiwiItem() { ID = 2, Title = "MyTitle2" });
db.Insert(new KiwiItem() { ID = 3, Title = "MyTitle3" });
db.Insert(new KiwiItem() { ID = 4, Title = "MyTitle4" });
});
this.sourceColl = new ObservableCollection<KiwiItem>();
this.selectionList = new List<KiwiItem>();
// Query the db. In practice, fill the sourceColl according to your business scenario
foreach (KiwiItem item in db.Table<KiwiItem>())
{
this.sourceColl.Add(item);
if (item.ID == 2 || item.ID == 4)
this.selectionList.Add(item);
}
}
// Exec (2)
this.listView.ItemsSource = this.sourceColl;
foreach (KiwiItem item in this.selectionList)
this.listView.SelectedItems.Add(item);
}
}
public class KiwiItem
{
[SQLite.AutoIncrement, SQLite.PrimaryKey]
public int ID { get; set; }
public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10845 次 |
| 最近记录: |