HOPEFULLY,WPF中有实力的人知道发生了什么......下面我采样的场景也适用于其他人,比如文本框,命令按钮等......
我正在玩创建自定义用户控件...例如:使用简单的Combobox。在一个项目类库LibA中,我创建了一些派生自... ex:TextBox,ComboBox,Window等的示例。第二个库LibB我正在创建另一个派生自ex:Combobox在LibA中的类...否则,没有问题....在C#WinForms中做了类似的事情没有问题。
现在,问题是,我将控件(从LibB)拖到应用程序的第一个“Window”(原生,因此没有派生问题),保存并运行。派生的库甚至没有命中它的构造函数,我只是简单的命令,只是测试它是否正在创建正常工作或不工作,但它不...在表单的XAML中,它正确引用两个命名空间项目,所以我知道这似乎是正确的。
所以,然后我在相同的原始LibA中创建了一个派生的组合框,将其放在表单上,并且IT正确地进入了构造函数。
以下是我发生的事情的片段。
namespace LibA
{
public class MyCombo1 : ComboBox
{
public MyCombo1()
{ ToolTip = "this is my base declaration"; }
}
public class MyCombo1b : MyCombo1
{
public MyCombo1b() : base()
{ ToolTip = "this constructor IS reached"; }
}
}
在单独的项目(库)中,
using FirstLibraryThatHas_MyCombo1
namespace LibB
{
public class OtherLibCombobox : MyCombo1
{
public OtherLibCombobox() : base()
{ ToolTip = "this version is NOT being recognized in the window"; }
}
}
所以,这些都不是视觉设计的,它们都只是代码...另外,我也用TextBox控件完成了,结果相同......它不会在调试器中停止..任何想法?
虽然我已从样本中更改了实际名称,但这是一个全新的窗口,一个带有原始类声明,一个带有DERIVED版本。这是一个完整的XAML测试窗口
<Window x:Class="MyProject.TestWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TestWindow" Height="300" Width="300"
xmlns:my="clr-namespace:WPFGUI;assembly=WPFGUI"
xmlns:my1="clr-namespace:DerivedControls;assembly=DerivedControls">
<Grid>
<my:MyComboBoxClass
Name="MyComboBoxInWindow"
HorizontalAlignment="Left"
Height="23"
Width="120" />
<my1:cboDerivedComboClass
Name="cboDerivedComboInWindow"
Height="23"
HorizontalAlignment="Left"
Width="120" />
</Grid>
</Window>
答案 0 :(得分:0)
我已尝试过但未能重现此问题。不过,我认为你有一个不同的问题。如果您使用上面的xaml - 第二个组合框将完全覆盖第一个 - 因此您将无法获得工具提示......
另外,请检查所有程序集是否针对相同的框架版本。
答案 1 :(得分:0)
这不是一个循环引用吗?
您调用另一个程序集中的MyDerivedControl,DerivedControl需要主程序集 因为它继承了你在那里定义的类型。 然后,您尝试在主程序集的窗口中显示它?
尝试清理并重建项目。