gpt4 book ai didi

WPF 绑定(bind)到 Window 属性失败

转载 作者:行者123 更新时间:2023-12-04 23:29:21 25 4
gpt4 key购买 nike

我的项目中有一个名为“CarSystemWindow”的自定义控件类。它源自 Window,并有一个自定义模板,使我的应用程序中的所有窗口都具有相同的外观。它还定义了两个依赖属性,名为 DeviceName 和 DeviceType。这些是字符串类型。它们分别默认为“Vehicle:”和“Car 54”。

在我的主程序中,我从我的数据库中检索一行到一个 View 模型对象中,并在程序初始化期间将其保存在一个名为 Site 的普通 CLR 属性中。在主窗口的 xaml 中,我有以下代码:

<cs:CarSystemWindow x:Class="....MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:..."
xmlns:cs="..."
Background="Black"
Closed="Window_Closed"
DataContext="{Binding Path=Site, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
DeviceName="{Binding Path=SiteName}"
DeviceType="{Binding Path=SiteTypeName}"
Icon="..."
Height="600"
Loaded="Window_Loaded"
ResizeMode="CanMinimize"
SourceInitialized="Window_SourceInitialized"
Title="Window Title"
Width="800"
WindowStartupLocation="CenterScreen">

在运行时,DataContext 属性上的绑定(bind)失败并显示以下消息:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Window', AncestorLevel='1''. BindingExpression:Path=Site; DataItem=null; target element is 'MainWindow' (Name=''); target property is 'DataContext' (type 'Object')

我在其他地方使用了相同的绑定(bind)代码并且它有效。我什至将 Site 属性变成了依赖属性,但它仍然失败。

有没有人知道绑定(bind)失败的原因?

谢谢

托尼

最佳答案

我认为您需要更改对此的绑定(bind):

{Binding RelativeSource={RelativeSource Self}, Path=Site}

您当前的绑定(bind)不起作用的原因是您正试图在层次结构中从 Window 上升一个级别,但您实际上想要该 Window。

这里有一个很好的资源,可以用来确定不同场景下的绑定(bind)字符串应该是什么:

http://www.nbdtech.com/Free/WpfBinding.pdf

关于WPF 绑定(bind)到 Window 属性失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7043725/

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