WPF 数字 UpDown 控件在哪里?
进入第一个严肃的 WPF 项目。 似乎有很多基本的控件都缺失了。 具体来说,我正在寻找 Numeric UpDown 控件。 我是否错过了乐队外的发行? 真的不想写自己的控件。
我不想使用 WindowsFormHost 并在其上放置 WinForm ctl。 我希望它完全是 WPF,没有任何遗留垃圾。
谢谢
Getting into the first serious WPF project. It seems like there are a lot of basic controls flat out missing. Specifically, I am looking for the Numeric UpDown control. Was there an out of band release that I missed? Really don't feel like writing my own control.
I do not want to use the WindowsFormHost and plop a WinForm ctl on it. I want it to be fully WPF without any legacy junk.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(16)
只需使用 Extended.Wpf.Toolkit 中的
IntegerUpDown
控件即可您可以像这样使用它:
将以下命名空间添加到您的 XAML:
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
在您希望控件使用的 XAML 中:< /p>
Simply use the
IntegerUpDown
control in the Extended.Wpf.ToolkitYou can use it like this:
Add to your XAML the following namespace:
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
In your XAML where you want the control use:
<xctk:IntegerUpDown Name="myUpDownControl" />
我自己做了;
xaml
和背后的代码
I made my own;
the xaml
and the code behind
这是我自己的用户控件的示例,具有向上和向下键捕获。
Xaml 代码:
和代码:
This is example of my own UserControl with Up and Down key catching.
Xaml code:
And the code:
让我们享受一些黑客的事情:
这里有一个
Slider
的Style
作为NumericUpDown
,简单易用,没有任何隐藏代码或第三方库。如果您确实想对
TextBox
应用输入限制,请尝试以下操作:并将 xaml
TextBox
部分修改为:编辑:
但上面的代码有一个严重的错误......
看代码:
TextBox
失去焦点后会更新值,但如果在Binding
中添加UpdateSourceTrigger=PropertyChanged
,则无法输入将点(.) 放入TextBox
中。您可以使用下一个转换器代码来修复它:
在 Xaml 中使用:
Let's enjoy some hacky things:
Here is a
Style
ofSlider
as aNumericUpDown
, simple and easy to use, without any hidden code or third party library.If you want apply input restrictions on
TextBox
indeed, try this:And modify xaml
TextBox
part to:EDIT:
But the above code has a nasty bug...
Look at the code:
The
TextBox
will update value after it lost focus, but if you addUpdateSourceTrigger=PropertyChanged
inBinding
, you will cannot type dot(.) intoTextBox
.You can use next converter code to fix it:
Use in Xaml:
给出的答案都可以。 但是,我希望当鼠标离开控件时按钮自动隐藏。 这是我的代码,基于上面的 vercin 答案:
样式
代码
The given answers are OK. However, I wanted the buttons to auto hide, when mouse leave the control. Here is my code based on vercin answer above:
Style
Code
您可以使用我编写的 WPF NumericUpDown 控件作为 WPFControls 库的一部分。
You can use NumericUpDown control for WPF written by me as a part of WPFControls library.
在 WPF 中将
VerticalScrollBar
与TextBlock
控件结合使用。 在后面的代码中,添加以下代码:在构造函数中,为滚动条定义一个事件处理程序:
然后在事件处理程序中,添加:
这是我的代码中的原始片段...进行必要的更改..:)
Use
VerticalScrollBar
with theTextBlock
control in WPF. In your code behind, add the following code:In the constructor, define an event handler for the scrollbar:
Then in the event handler, add:
Here is the original snippet from my code... make necessary changes.. :)
为继续回答9年的问题而道歉。
我已经遵循@Michael 的回答并且有效。
我将其作为用户控件来执行,我可以像控件元素一样拖放。 我使用 Nuget 的 MaterialDesign 主题来获得 V 形图标和按钮波纹效果。
来自 Micheal 的经过修改后运行的 NumericUpDown 将如下所示:-
用户控件的代码:-
TemplateNumericUpDown.xaml
TemplateNumericUpDown.cs
在 MyPageDesign.xaml 上,拖放创建的用户控件将具有
< ;UserControlTemplate:TemplateNumericUpDown HorizontalAlignment="左"高度="100" VerticalAlignment="顶部"宽度="100"/>
要从模板中获取值,我使用
I我还不太擅长根据 FontSize 元素绑定控件的高度,因此我在用户控件中手动设置页面字体大小。
** 注意:- 我已将程序中的“Archieve”名称更改为 Archive =)
Apologize for keep answering 9 years questions.
I have follow @Michael's answer and it works.
I do it as UserControl where I can drag and drop like a Controls elements. I use MaterialDesign Theme from Nuget to get the Chevron icon and button ripple effect.
The running NumericUpDown from Micheal with modification will be as below:-
The code for user control:-
TemplateNumericUpDown.xaml
TemplateNumericUpDown.cs
On MyPageDesign.xaml, drag and drop created usercontrol will having
<UserControlTemplate:TemplateNumericUpDown HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100"/>
To get the value from the template, I use
I'm not in good skill yet to binding the Height of the control based from FontSize element, so I set the from my page fontsize manually in usercontrol.
** Note:- I have change the "Archieve" name to Archive on my program =)
这是另一个开源控件,它具有多种不同的输入方法(鼠标拖动、鼠标滚轮、光标键、文本框编辑),支持多种数据类型和用例:
Here is another open source control that has many different input methods (mouse drag, mouse wheel, cursor keys, textbox editing), supports many data types and use cases:
https://github.com/Dirkster99/NumericUpDownLib
这是另一个答案的修改,但具有绑定支持
This is a modification of another answer but with binding support
我有一个幼稚的解决方案,但很有用。
这是代码:
I have a naive solution but useful.
Here is the code:
只是一个务实的示例:
- 右键单击您的项目(在解决方案下),选择“管理 nuget 包...”
- 在菜单中单击浏览选项卡搜索“wpftoolkit” ”,选择“
Extended.Wpf.Toolkit
”-安装它!
-右键单击用户控件工具箱,选择“添加选项卡..”并将其命名为“WPF Toolkit” -
右键单击新的“WPF Toolkit”选项卡,选择“选择项目...” -
在菜单中单击“浏览...”按钮,查找 nugets DLL 文件夹,选择全部
“
...\packages\Extended.Wpf.Toolkit.3.5.0\lib\net40\*.dll
”忽略有关某些 DLL 可能不包含用户控件的警告!
准备好了:)
Just a pragmatic to do sample:
-Right click your Project (under Solution), select "Manage nuget Packages..."
-In Menu click Browse Tab search for "wpftoolkit", select "
Extended.Wpf.Toolkit
"-Install it!
-Right click in your User Control Toolbox, select "Add Tab.." and name it "WPF Toolkit"
-Right click on the new "WPF Toolkit" Tab, select "Choose items..."
-In Menu click "Browse..." Button, look for nugets DLL folder, select all
"
...\packages\Extended.Wpf.Toolkit.3.5.0\lib\net40\*.dll
"Ignore Warnings about some DLLs may not containing user controls!
Ready :)
转到您项目的 NugetPackage 管理器 -> 浏览并搜索 mahApps.Metro -> 将包安装到您的项目中。 您将看到添加的参考:MahApps.Metro。
然后在您的 XAML 代码中添加:
"xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
在您要使用对象的位置添加:
享受对象(绑定、触发器等...)。
Go to NugetPackage manager of you project-> Browse and search for mahApps.Metro -> install package into you project. You will see Reference added: MahApps.Metro.
Then in you XAML code add:
"xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
Where you want to use your object add:
Enjoy the full extensibility of the object (Bindings, triggers and so on...).
免费版 Extended.Wpf.Toolkit 不支持 .net core 和 .net
您可以使用
HandyControl
,它有一个 NumericUpDown 控件,在 Wpf 和 .net 5 中运行良好。https://github.com/HandyOrg/HandyControl
Free version of Extended.Wpf.Toolkit doesn't support .net core and .net
You can use
HandyControl
, it has a NumericUpDown control and works good in Wpf and .net 5.https://github.com/HandyOrg/HandyControl
您可以使用“NumericUpDown”。
链接在这里
https://mahapps.com/docs/controls/numericupdown
You can use "NumericUpDown".
Here is the link
https://mahapps.com/docs/controls/numericupdown