- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个自定义 View :
public class VolosDatePicker : Button {
private DatePicker _Picker;
private IViewContainer<View> _ParentLayout;
public static readonly BindableProperty DateProperty = BindableProperty.Create(nameof(Date), typeof(DateTime?), typeof(VolosDatePicker));
public DateTime? Date {
get { return (DateTime?)GetValue(DateProperty); }
set { SetValue(DateProperty, value); }
}
private string TextFormat = Utente.UteLoggato.formatoData;
private string DefaultText = "click me";
//public static readonly BindableProperty DefaultTextProperty = BindableProperty.Create<VolosDatePicker, string>(p => p.DefaultText, "Pick Date...");
public VolosDatePicker() {
//create the datepicker, make it invisible on the form.
_Picker = new DatePicker {
IsVisible = false
};
//handle the focus/unfocus or rather the showing and hiding of the dateipicker
_Picker.Focused += _Picker_Focused;
_Picker.Unfocused += _Picker_Unfocused;
//command for the button
Command = new Command((obj) => {
//try to get the parent layout and add the datepicker
if (_ParentLayout == null) {
_ParentLayout = _GetParentLayout(Parent);
if (_ParentLayout != null) {
//add the picker to the closest layout up the tree
_ParentLayout.Children.Add(_Picker);
} else {
throw new InvalidOperationException("The DatePickerButton needs to be inside an Layout type control that can have other children");
}
}
//show the picker modal
_Picker.Focus();
});
_UpdateText();
}
private IViewContainer<View> _GetParentLayout(Element Parent) {
//StackLayout, RelativeLayout, Grid, and AbsoluteLayout all implement IViewContainer,
//it would be very rare that this method would return null.
IViewContainer<View> parent = Parent as IViewContainer<View>;
if (Parent == null) {
return null;
} else if (parent != null) {
return parent;
} else {
return _GetParentLayout(Parent.Parent);
}
}
void _Picker_Focused(object sender, FocusEventArgs e) {
//default the date to now if Date is empty
_Picker.Date = Date ?? DateTime.Now;
}
void _Picker_Unfocused(object sender, FocusEventArgs e) {
//this always sets.. can't cancel the dialog.
Date = _Picker.Date;
_UpdateText();
}
protected override void OnBindingContextChanged() {
base.OnBindingContextChanged();
_UpdateText();
}
private void _UpdateText() {
//the button has a default text, use that the first time.
if (Date != null) {
//default formatting is in the FormatProperty BindableProperty
base.Text = Date.Value.ToString(TextFormat);
} else {
base.Text = DefaultText;
}
}
protected override void OnPropertyChanging(string propertyName = null) {
//set this so there is an old date for the DateChangedEventArgs
base.OnPropertyChanging(propertyName);
if (propertyName == DateProperty.PropertyName) {
//_OldDate = Date;
_UpdateText();
//if (_OldDate != null && Date != null) DateSelected(this, new DateChangedEventArgs((DateTime)_OldDate, (DateTime)Date));
}
}
protected override void OnPropertyChanged(string propertyName = null) {
base.OnPropertyChanged(propertyName);
if (propertyName == DateProperty.PropertyName) {
_UpdateText();
}
}
}
在我的 XAML 页面中,我有这个绑定(bind):
<view:VolosDatePicker Date="{Binding WoSpesaDett.DataSpesa}" Grid.Row="0" Grid.Column="1" />
我是这样设置这个日期的:
WoSpesaDett.DataSpesa = new System.DateTime(2015, 5, 18);
RaisePropertyChanged(() => WoSpesaDett);
在我使用此方法之前,DatePicker
的日期值设置正确,但在我尝试使用控件选择器设置日期后,上述方法停止工作。
如果我从控件选取器中选择任何日期,然后尝试使用上述方法以编程方式设置日期,则日期不会更改。
它似乎失去了与属性 WoSpesaDett.DataSpesa
的绑定(bind)。
最佳答案
根据documentation :
Optionally, when creating a BindableProperty instance, the following parameters can be specified:
The binding mode. This is used to specify the direction in which property value changes will propagate. In the default binding mode, changes will propagate from the source to the target.
尝试将绑定(bind)的模式设置为 TwoWay
,如下所示:
<view:VolosDatePicker Date="{Binding WoSpesaDett.DataSpesa, Mode=TwoWay}" Grid.Row="0" Grid.Column="1" />
或者编辑 BindableProperty
本身。
希望对您有所帮助!
关于c# - Xamarin 自定义 DatePicker 失去绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47797811/
我在我的项目(Ubuntu 18.04.2 LTS)中使用了 celery 4.4.0 版本。当我提出异常('功能中的功能太少无法分类')时, celery 项目失去了 worker ,我得到了这样的
我在这样的更新面板中有一个 GridView :
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 9 年前。 这个问题似乎不是关于 a specific programming problem,
当我尝试使用 jquery 的 html() 将 HTML 附加到另一个元素时。我失去了 ng-click 的能力。这是我的代码的粗略描述。例如我有一个名为 testController 的 Cont
我正在将 python 连接到 mySqL 数据库,并从 android 发送两个 Double 值以存储在 Mysql 中,然后我收到此错误 enter code here Exception i
无法理解为什么这个简单的事情没有反应性。看起来我错过了一些 Vue 的基础。 {{connection_status}} export default {
我不明白出了什么问题,在我的设备上应用程序运行良好,但有时在日志中(应用程序用户、 session 、崩溃......通过某些服务跟踪)我看到应用程序崩溃(NullPointerException),
我正在处理一个我有点困惑的问题。问题是假设您是二战期间英国空军的一名将军。您还剩下 100 架飞机来保卫英国。在您执行的每个任务中,每架飞机都有 50% 的几率被德国高射炮击落,因此每次执行任务您都会
我相信我的问题与以下问题非常相似 Spring security 'remember me' cookie not avaiable in first request . 基本上,我有一组用于公司内部
似乎 Bootstrap 下拉按钮在单击后仍保持焦点。 我的用例与此不兼容, 用户应该在单击按钮后按“SPACE”键,为了触发与按钮无关的东西。 问题是按钮保持焦点状态,因此按空格键 激活按钮。 我希
我有一个 MKMapView,其中有很多从解析器 xml 定义的注释引脚;那是我的代码: -(IBAction)LoadAnnotation:(id)sender { RXML element
我有一个 HTML 表格,用户可以在其中输入他的待机开始时间和待机结束时间,该时间计算总时数,并基于此计算获得的补偿时数。这一切都有效。 现在,它所做的是,每当用户输入开始和结束时间时,用户必须将焦点
Windows 系统更新后,Eclipse 不再了解 Android 的任何信息...我如何恢复对 Android 的支持?我尝试重新安装 SDK,但没有成功... 太奇怪了。我注意到项目模板丢失了,
我正在发送 SOAP 请求来更新某些实体。当我创建(而不是更新)几乎相同的东西时,一切正常。我跟踪了客户端和传输的日志记录,最后它给了我一个线索。它看起来像这样: DEBUG:suds.client:
这个问题在这里已经有了答案: TypeError: Cannot read property 'setState' of undefined (3 个答案) How to access the co
我使用 PostgreSQL 和 repmgrd 创建了一个 Docker 镜像,所有这些镜像都是使用 supervisor 启动的。 我现在的问题是,当它启动时,由 supervisor 生成的 r
新的 iOS 开发者为 iPhone 编写第一个委托(delegate)应用程序。 模态调用的父 View Controller 有六个 subview Controller ,它们使用父 View
我目前正在 MVC4 中创建一些用户配置文件编辑表单,并且为了测试,我将 UserId 属性呈现为表单上的只读文本框,如下所示: @Html.LabelFor(model => model.
我是一名优秀的程序员,十分优秀!