繁体   English   中英

如何绑定到视图中的属性而不绑定到ViewModel中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM