在下面的代码中,我绑定记录形成一个视图模型,它使用的是一个可观察的代码,我还提高了intifyProperties tychange,现在我有一个按钮设置,它使用navigation.pushasync的方法去一个新的页面,在那里我更新数据库记录,我已经在这个新页面中创建了一个列表视图,并使用这里显示的相同的绑定来绑定记录,每当我添加它更新的东西,但如果我按后退按钮,回到这个EntryTabPage绑定不更新,它只更新,如果我完全关闭应用程序并重新启动它数据显示。
我想更新这个listview,但不知道该怎么做,我尝试过使用onappearing并在Listviewname中键入。itemssource=记录;但这表明了一个错误“这在当前的情况下并不存在”。如果能在正确的方向上提供帮助,我们将不胜感激。
注意:绑定在选项卡页面以外的其他地方工作。这是层次结构选项卡页面-
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Bunk_Master.EntryPageTab1"
Title="Default">
<StackLayout x:Name="stacklayout">
<ListView ItemsSource="{Binding Records}"
x:Name="classListView">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding}">
</TextCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button Text="new"
x:Name="addclassbutton">
</Button>
</StackLayout>
namespace Bunk_Master
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class EntryPageTab1 : ContentPage
{
public EntryPageTab1()
{
InitializeComponent();
BindingContext = new ClassViewModel();
addclassbutton.Clicked += async (object sender, EventArgs e) =>
{
await this.Navigation.PushAsync(new AddClass());
};
}
protected override void OnAppearing()
{
base.OnAppearing();
}
}
}
这就是ViewModel
namespace Bunk_Master
{
public class ClassViewModel : BaseViewModel
{
readonly Database db;
public string classname { get; set; }
// public int absentnos { get; set; }
// public int presentnos { get; set; }
public ICommand AddCommand { get; set; }
public ICommand DeleteCommand { get; set; }
public ObservableCollection<string> Records { get; set; }
public ClassViewModel()
{
AddCommand = new Command(Add);
DeleteCommand = new Command(Delete);
db = new Database("classdb");
db.CreateTable<ClassModel>();
Records = new ObservableCollection<string>();
ShowAllRecords();
}
void Add()
{
var record = new ClassModel
{
classname = classname,
//absentnum = absentnos,
//presentnum = presentnos
};
db.SaveItem(record);
Records.Add(record.ToString());
RaisePropertyChanged(nameof(Records));
ClearForm();
}
private void Delete(object obj)
{
throw new NotImplementedException();
}
void ClearForm()
{
classname = string.Empty;
RaisePropertyChanged(nameof(classname));
}
void ShowAllRecords()
{
Records.Clear();
var classdb = db.GetItems<ClassModel>();
foreach (var classmodel in classdb)
{
Records.Add(classmodel.ToString());
}
}
}
}
这就是我实现Inotifypropertychange的地方
namespace Bunk_Master
{
public class BaseViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged([CallerMemberName] string propertyName = "")
{
var handler = PropertyChanged;
if (handler == null) return;
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
如果有人碰巧发现一个类在一个类中工作,而不是在另一个类中工作,并且您的代码是完美的,这只是因为必须使用您实例化的类,而不是实例化一个新的类。
只需添加这一行就可以修复我的代码
public static Workingclass classInstance = new Workingclass;
然后我在其他类中使用类Incstance而不是创建新实例,并且数据正在正确更新。
注:我想删除这篇文章,但在互联网上有很多其他类似的帖子,没有人解决这个简单的问题,也许有人会发现它很有用。
您可能需要使用这个。DataContext=这个
让它工作。在我的例子中,只有当我打印一个MessageBox时,它才会显示列表。在分配ItemsSource之前显示()。我通过添加上面的行来修复它。希望有帮助!
在ClassViewModel中进行如下更改,然后重试。
namespace Bunk_Master
{
public class ClassViewModel : BaseViewModel
{
readonly Database db;
public string classname { get; set; }
// public int absentnos { get; set; }
// public int presentnos { get; set; }
public ICommand AddCommand { get; set; }
public ICommand DeleteCommand { get; set; }
public ObservableCollection<string> _records;
public ObservableCollection<string> Records
{
get { return _records; }
set
{
_records = value;
RaisePropertyChanged();
}
}
public ClassViewModel()
{
AddCommand = new Command(Add);
DeleteCommand = new Command(Delete);
db = new Database("classdb");
db.CreateTable<ClassModel>();
_records = new ObservableCollection<string>();
ShowAllRecords();
}
void Add()
{
var record = new ClassModel
{
classname = classname,
//absentnum = absentnos,
//presentnum = presentnos
};
db.SaveItem(record);
_records.Add(record.classname.ToString());
ClearForm();
}
private void Delete(object obj)
{
throw new NotImplementedException();
}
void ClearForm()
{
classname = string.Empty;
}
void ShowAllRecords()
{
_records.Clear();
var classdb = db.GetItems<ClassModel>();
foreach (var classmodel in classdb)
{
_records.Add(classmodel.ToString());
}
}
}
}
我有一个GeoPandas df: 看起来像: 如何将坐标列转换为LineString(无论元组列表中有多少个点)?例如。: 编辑:我试过(见Prateek的回答): 以及: 两者都返回以下错误: 属性错误回溯(上次调用)~/opt/anaconda3/lib/python3.8/site-packages/shapely/speedups//u speedups.pyx in shapely.s
当使用(来自maven central或生成mojo时的输出)时,SLF4j会给出错误 SLF4J:类路径包含多个SLF4J绑定 SLF4J:在[jar:file:~/.ivy2/cache/org.SLF4J/slf4j-log4j12/jars/slf4j-log4j12/jars/slf4j-log4j12-1.7.5.jar!/org/SLF4J/impl/staticloggerbind
ListView控件用于显示项列表。 与TreeView控件一起,它允许您创建类似Windows资源管理器的界面。 让我们从工具箱中单击ListView控件并将其放在表单上。 ListView控件显示项目列表以及图标。 ListView控件的Item属性允许您添加和删除项目。 SelectedItem属性包含所选项的集合。 MultiSelect属性允许您在列表视图中设置选择多个项目。 Check
在EJS中包含外部文件似乎从来没有一种简单的方法。 我的项目结构是这样的。如此简单却让人心痛: 在内部,我必须包含。我很幸运地遵循了他们的文档:https://ejs.co/#docs并以这种方式包含文件,因为“include相对于包含调用的模板”, 在中,我像这样编译模板: 但我却犯了这个错误! 我已经在编译选项中设置了视图路径。我试过有路/无路。我还尝试在相同的视图路径上设置。 我错过了什么?
问题内容: 我正在开始一个大型的Codeigniter项目,并想尝试为内容片段(如可能在不同页面/控制器上显示的数据循环)创建一些可重用的“迷你”视图。 从主控制器的视图中调用视图更好吗?如果是这样,怎么办?还是应该从控制器调用“迷你视图”,然后将视图的代码传递给主视图? 问题答案: 其他视图中的视图称为 嵌套视图 。在CodeIgniter中包括嵌套视图的方法有两种: 1.将嵌套视图加载到控制器
我想在android中从mysql数据库中检索数据,并在textview中显示 这是后台asynctask代码 }