- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 TabbedPage,我在其中添加条目,并在其他选项卡中列出数据。使用 MVVM 向数据库添加条目后如何刷新数据?
主页:
<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:myMood.Views"
x:Class="myMood.Views.MainPage"
BackgroundImage="logo.png">
<local:Register></local:Register>
<local:Entries></local:Entries>
<local:Statistics></local:Statistics>
<local:Settings></local:Settings>
<local:About></local:About>
</TabbedPage>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="myMood.Views.Entries"
Icon="ic_view_headline_white_24dp.png"
xmlns:viewModels="clr-namespace:myMood.ViewModels">
<ContentPage.BindingContext>
<viewModels:EntriesViewModel />
</ContentPage.BindingContext>
<ListView ItemsSource="{Binding MoodEntries}"
HasUnevenRows="True"
Margin="20">
<ListView.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30*" />
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
<Image Source="ic_date_range_black_24dp.png" Grid.Column="0" Grid.Row="0" HorizontalOptions="Center"></Image>
<Image Source="ic_local_hotel_black_24dp.png" Grid.Column="1" Grid.Row="0" HorizontalOptions="Center"></Image>
<Image Source="ic_directions_run_black_24dp.png" Grid.Column="2" Grid.Row="0" HorizontalOptions="Center"></Image>
<Image Source="ic_done_all_black_24dp.png" Grid.Column="3" Grid.Row="0" HorizontalOptions="Center"></Image>
</Grid>
</ListView.Header>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30*" />
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
<Label Text="{Binding EntryDate, StringFormat='{0:d/M}'}" Grid.Column="0" Grid.Row="0" HorizontalOptions="Center"></Label>
<Label Text="{Binding Sleep, StringFormat='{0:0.0}'}" Grid.Column="1" Grid.Row="0" HorizontalOptions="Center"></Label>
<Label Text="{Binding Stress, StringFormat='{0:0.0}'}" Grid.Column="2" Grid.Row="0" HorizontalOptions="Center"></Label>
<Label Text="{Binding AchivedGoals, StringFormat='{0:0.0}'}" Grid.Column="3" Grid.Row="0" HorizontalOptions="Center"></Label>
<Label Text="{Binding Comment, StringFormat='{0:0.0}'}" Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="1"></Label>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
using myMood.Models;
using System;
using System.Collections.Generic;
using System.Text;
namespace myMood.ViewModels
{
public class EntriesViewModel
{
public List<MoodEntry> MoodEntries { get; set; }
public EntriesViewModel()
{
MoodEntries = App.MoodDatabase.GetMoodEntries();
}
}
}
namespace myMood.ViewModels
{
public class RegisterViewModel : INotifyPropertyChanged
{
public MoodEntry MoodEntry { get; set; }
public DateTime LowerLimitDate { get; set; }
public DateTime HighLimitDate { get; set; }
public Command SaveEntry
{
get
{
return new Command(() =>
App.MoodDatabase.SaveMoodEntry(MoodEntry));
}
}
public RegisterViewModel()
{
MoodEntry = App.MoodDatabase.GetMoodEntry(DateTime.Today);
if (MoodEntry == null)
MoodEntry = new MoodEntry();
LowerLimitDate = new DateTime(2018, 1, 1);
HighLimitDate = DateTime.Today;
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
最佳答案
您需要执行 INotifyPropertyChanged
View 模型中的界面。因为目前 View 模型没有向 UI 发送数据已更改的信号。
所以你的 View 模型应该是这样的:
public class EntriesViewModel : INotifyPropertyChanged
{
private List<MoodEntry> _moodEntries;
public List<MoodEntry> MoodEntries
{
get { return _moodEntries; }
set { _moodEntries = value; OnPropertyChanged(); }
}
public EntriesViewModel()
{
MoodEntries = App.MoodDatabase.GetMoodEntries();
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
关于xaml - 使用 MVVM 刷新 TabbedPage 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48642393/
所以,我遇到了这个问题,但我不知道如何解决。基本上,当我从 Navigation.PushAsync(tabbedPage); 调用时,我想更改 TabLayout 的 mainTitle 颜色。看起
我在我的 xamarin 表单项目中使用选项卡式页面。我正在尝试在 Android 的 MyTabsRenderer 类中使用 OnTabReselected 事件。但不会调用 OnTabSelect
我是 Xamarin 的新手,想创建一个包含多个页面的应用程序,这些页面可通过单击按钮导航到。我已经弄清楚如何通过代码导航到所需的页面,但我正在努力隐藏选项卡以禁用用户导航。 我正在使用 Tabbed
我想使用绑定(bind)命令将默认选定的选项卡更改为另一个选项卡,但不使用代码隐藏。这是我的代码: 我试图将上下文绑定(bind)到页面本身,但是没有像 First 或 Second 这样的属
我一直在修改 Xamarin 表单,但遇到了一些障碍。我有一个应用程序,其 rootPage 是 TabbedPage。我以编程方式将三个子内容页面添加到此页面。这一切都运行良好。但是,这些页面会打开
这可以创建吗?我需要在选项卡上方添加 2 个按钮,如下所示: How to add two buttons in the TabbedPage, so It will l
我有带 4 个子项的标签页(4 个标签),我想覆盖后退按钮以在您按下它时始终设置第一个页面。我尝试了几种方法,这对我来说似乎最有意义,但它不起作用 - tabbedPage 始终为空(当我在所有选项卡
我是 Xamarin 的初学者,正在尝试将 TabbedPage 用于我的应用程序。当我使用 TabbedPage 并设置图标时,它工作正常。 然后我使用下面的链接将 TabbedPage 位置设置为
我有个问题。我创建了以下 TabbedPage:
我的 Xamarin Forms 项目有一个选项卡式页面。选项卡过去常常滑动,但我已经实现了 CustomRender 来阻止这种情况。 这非常有效,除非我需要将页面重新添加到选项卡栏。我似乎无法重复
我正在尝试将一些自定义内容页面放入选项卡式页面中。遗憾的是,我不确定如何使用 XAML 语法执行此操作。我的虚拟项目如下所示: 第 1 页 第2页完全一样。标签页:
我正在寻找一种方法来禁用 TabbedPage 中的选项卡。该选项卡应该仍然显示在 TabbedPage 标题中,但只是被禁用。 我试图将 Page 设置为 IsEnabled = false 但显然
在 Android 中,因为标签栏在顶部,所以我不需要标题栏和标签栏来说明您在哪个标签上。 这将隐藏两个平台的标题栏:
我有一个 TabbedPage,我在其中添加条目,并在其他选项卡中列出数据。使用 MVVM 向数据库添加条目后如何刷新数据? 主页: 参赛作品:
我正在将 Prism 与项目源一起使用,在每个选项卡式页面内都有一个 Listview,我无法将“ItemTapped”事件用作命令行为的事件,以在点击 listview 项目时触发 viewmode
你能告诉我如何在 xamarin 的选项卡式页面中添加工具栏项目吗?谢谢 最佳答案 回复:Xamarin Forms Toolbar 关于xamarin - 如何在 Xamar
如何绑定(bind)不同 View 模型的标签页?为了更清楚,我有这个标签页: 这 3 个页面有不同的 View 模型。但是,问题是每个页面的 View 模型
我想在带有徽章计数的购物车图标中添加导航栏。 我使用工具栏项在导航栏中添加了购物车图标。并使用插件创建了徽章计数圆 View 。如果我要留出余量来将该徽章图标设置为工具栏项目,则它会隐藏在选项卡式页面
所以我正在为跨平台应用程序使用 Xamarin 表单,主 UI 是一个选项卡式页面,其中一个页面有一个 segmented control。其中,段控件将切换 ListView 控件的数据。问题是当我
我试图在 android 中找到屏幕底部的 Tabbing 栏,我已经在后面的 C# 代码中找到了,但我只是想知道如何在 .xaml 代码中做到这一点? 我已经添加了 Xamarin.Forms.Pl
我是一名优秀的程序员,十分优秀!