我在winform项目中使用自定义TextBox
,我在自定义TextBox
中添加了此属性:
private TextBox _nextControl;
public TextBox NextControl
{
set { _nextControl=value; }
get { return _nextControl; }
}
我在自定义TextBox
属性中使用属性TextBox
获得了包含2 NextControl
(textBox1和textBox2)的表单的结果。我可以在表格中看到所有TextBox
es:
在这种情况下,属性NextControl
会在我的表单中显示所有TextBox
,以选择我的下一个控件。
但是当我想在我的新WPF costum TextBox
中做同样的事情时,我得到了相同的条件(2 TextBox
es,textBox1和textBox2):< / p>
为什么我没有相同的结果?以及如何在我的WPF项目中执行此操作?
更新:
有关更多说明,在我的winform项目中,我使用属性NextControl
从UI属性中选择下一个控件。
protected override void OnKeyDown(KeyEventArgs e)
{
if(e.KeyCode==Keys.Down)
// select the next TextBox chosen in this TextBox option
_nextControl.Select();
}
因为我已经可以在用户界面中选择下一个TextBox
的名称,我不想使用额外的代码来执行此操作。
但是这在WPF中不起作用:我无法在我的窗口中看到我的TextBox
es的名称NextControl
(如果我选择属性类型= {{则自动在winform中1}})。
p.s。:我的自定义TextBox
继承自TextBox
。
更新:
我使用示例项目的自定义System.Windows.Controls.TextBox
[here]上传了一个winform项目,因为我希望WPF的行为相同。
我已更新此示例的链接。
答案 0 :(得分:1)
快速查看代码告诉我你的Windows窗体用户控件与WPF不兼容,特别是Windows窗体中的keyDown事件解析参数“KeyEventArgs e”,这是一个System.Windows.Form.Key但是WPF解析“System.Windows.Input.Key”和WPF没有“文本框的Select()方法。此外,WPF以与WinForm完全不同的方式绑定控件,因此您的WinFromuserControl将无法在WPF格式中工作。
如果要在WPF表单中使用类似的行为,则必须编写一个WPF支持的行为。
答案 1 :(得分:1)
根据你的解释,我能理解的是,
希望您了解依赖项属性和WPF数据绑定。您需要使用的绑定是元素名称绑定。
答案 2 :(得分:1)