![](/img/trans.png)
[英]How to bind XmlDataProvider property of viewmodel with XmlDataProvider in view?
[英]How to bind to a property in view but not in viewmodel?
我有一些控件,其值在视图中使用,但在视图模型中没有任何关系。 我想将控件绑定到视图中的属性,而不必将其复制到视图模型中。
根据类似问题的答复 ,有可能,我正在使用以下代码来实现这一目标。 但是,当我没有看到预期的结果时,因此我猜测我无意中绑定了旗杆,而不是预期的属性。
XAML
<DatePicker x:Name="Uno"
SelectedDate="{Binding StartDate, Source={x:Static Application.Current}}"
SelectedDateChanged="DatePicker_OnSelectedDateChanged" />
<DatePicker x:Name="Due"
SelectedDate="{Binding StartDate, Source={x:Static Application.Current}}"
SelectedDateChanged="DatePicker_OnSelectedDateChanged" />
C#
public partial class ViewWindow : Window
{
public static DateTime StartDate { get; set; }
...
}
我的代码中缺少什么? 还是我误解了答复并以错误的方式进行处理?
这个:
x:Static Application.Current
尝试将Application.Current
设置为特定绑定表达式的绑定源。 但是,显然,您不想访问诸如Application.Current.StartDate
类的东西(我想,您的App
类未定义此类属性)。
实际上,我从您的属性定义中错过了static
关键字。
如果您使用的是.NET 4.5或更高版本,则可以通过以下方式为静态属性编写绑定路径:
<DatePicker x:Name="Uno"
SelectedDate="{Binding Path=(local:ViewWindow.StartDate)}"
SelectedDateChanged="DatePicker_OnSelectedDateChanged" />
local
这里是一个命名空间,在其中定义了ViewWindow
。
否则,请使用RelativeSource
标记扩展(当该属性是instance时,这也适用):
<DatePicker x:Name="Uno"
SelectedDate="{Binding StartDate,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type Window}}}"
SelectedDateChanged="DatePicker_OnSelectedDateChanged" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.