gpt4 book ai didi

c# - 如何绑定(bind)到 View 中而不是 View 模型中的属性?

转载 作者:行者123 更新时间:2023-11-30 20:41:53 24 4
gpt4 key购买 nike

我有一些控件,它们的值在 View 中 使用,但在 View 模型中 没有任何关系。我想将控件绑定(bind)到 View 中的属性,而不必将它们复制到 View 模型。

根据 a similar question's reply ,这是可能的,我正在使用以下代码来实现它。但是,当我没有看到预期的结果时,我猜测我无意中绑定(bind)了旗杆,而不是预期的属性。

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作为特定绑定(bind)表达式的绑定(bind)源。但是,显然,您不想访问像 Application.Current.StartDate 这样的东西(我想,您的 App 类没有定义这样的属性)。

实际上,我在您的属性定义中遗漏了 static 关键字。
如果您使用的是 .NET 4.5 或更高版本,则可以通过这种方式为静态属性编写绑定(bind)路径:

<DatePicker x:Name="Uno"
SelectedDate="{Binding Path=(local:ViewWindow.StartDate)}"
SelectedDateChanged="DatePicker_OnSelectedDateChanged" />

local 这里是一个命名空间,这里定义了ViewWindow
否则,使用 RelativeSource标记扩展(这也适合这种情况,当属性是实例时):

<DatePicker x:Name="Uno"
SelectedDate="{Binding StartDate,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type Window}}}"
SelectedDateChanged="DatePicker_OnSelectedDateChanged" />

关于c# - 如何绑定(bind)到 View 中而不是 View 模型中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31934853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com