首先让我说我对 WPF 相当陌生,所以请原谅我犯了任何愚蠢的错误,但我已经为此苦苦挣扎了一段时间。
我有一个简单的解决方案,包含三个类:
public class MyCustomItem
public class MyCustomLayout : ThirdPartyLayout<MyCustomItem>
public class MyViewController : INotifyPropertyChanged
MyCustomItem 是一个具有一些属性的简单类(“名称”就是其中之一)。ThirdPartyLayoutTool 是继承自 System.Windows.Controls.Panel 的 SDK 中的通用组件。MyViewController 是我用作数据内容的视图控制器。
然后我创建了这个简单的 XAML 作为项目主窗口:
<Window x:Class="DependencyViewer.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sdk="clr-namespace:Sdk;assembly=Sdk"
xmlns:local="clr-namespace:MyNamespace"
Title="MainWindow" Height="350" Width="525">
<local:MyCustomLayout x:Name="myLayout"/>
</Window>
一切都相应地显示。现在我的目标是增强由 ThirdPartyLayout 面板显示的子组件之一的显示,称为 TargetControl。所以我添加以下代码:
<Window.Resources>
<Style TargetType="{x:Type sdk:TargetControl}">
<Style.Resources>
<ToolTip x:Key="ToolTipContent">
<StackPanel>
<TextBlock FontWeight="Bold" Text="Testing 1 2 3"/>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</ToolTip>
</Style.Resources>
<Setter Property="ToolTip" Value="{StaticResource ToolTipContent}"/>
</Style>
</Window.Resources>
当我运行代码时,“Testing 1 2 3”消息正确显示,但是,我没有看到 Name 属性。在输出窗口中,我收到以下消息:
BindingExpression path error: 'Name' property not found on 'object' ''MyViewController' (HashCode=31884011)'
我不明白为什么绑定发生在 MyViewController 类上,而不是 TargetControl 类上。有任何想法吗?
最好的问候,卡洛斯·乔丹
编辑:
主要根据newb给出的建议修修补补指导,最终发现错误的根源其实是在SDK中。当前版本仍然有问题,但是从源代码编译时,我得到了预期的行为。
谢谢您的帮助。