新手求问,wpf的控件textextbox如何控制只能输入数字和一个小数点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手求问,wpf的控件textextbox如何控制只能输入数字和一个小数点相关的知识,希望对你有一定的参考价值。
参考技术A 前台代码:2.33320.333200.333后台代码:publicMainWindow()InitializeComponent();if(sp.Children.Count>0)intbasenum=0;intnum;for(inti=0;ibasenum)basenum=num;intnumber;for(inti=0;i如何在VS2010 WPF设计器中控制自定义控件的默认属性
【中文标题】如何在VS2010 WPF设计器中控制自定义控件的默认属性【英文标题】:How to control default properties for custom control in VS2010 WPF designer 【发布时间】:2011-05-16 01:52:02 【问题描述】:我有一个继承自 Button 的类。在该类的 XAML 中,我指定了宽度和高度以及内容,希望当我使用 VS2010 WPF 设计器将我的控件插入到例如一个窗口,这些将是这些属性的默认值。但是,设计器使用 Button 的默认值。
我的控制 XAML:
<Button x:Class="Something.FunctionButton4"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="64" d:DesignWidth="64"
Height="64" Width="64" Content="FunctionButton"
OverridesDefaultStyle="True"
Focusable="False">
<Button.Template>
<ControlTemplate TargetType="Button">
...
</ControlTemplate>
</Button.Template>
</Button>
设计器生成的 XAML:
<my:FunctionButton4 Content="Button" Height="23" x:Name="functionButton43" Width="75" />
我需要做什么来控制设计器默认值?
【问题讨论】:
***.com/questions/75495/…的可能重复 @Craig,您链接到的问题似乎恰恰相反:它是关于 not 使用控件的宽度和高度(在运行时),而这个问题是关于 想要使用它们(在设计时)。 @Joe,原来如此。我误读了。应该适用相同的原则,但它可能仍然有用。 【参考方案1】:这就是DependencyProperty.OverrideMetadata 的用途。
在静态构造函数中,您将调用 OverrideMetadata,并使用您的新默认值传递 FrameworkPropertyMetadata
。例如,这会将 Button 的默认宽度设置为 60
public class NewButton : Button
static NewButton()
WidthProperty.OverrideMetadata(typeof(NewButton), new FrameworkPropertyMetadata((double)60));
【讨论】:
【参考方案2】:删除Height="64" Width="64"
。 DesignHeight
和 DesignWidth
就足够了。
编辑: 在您的控件构造函数中。通过检查控件是否处于设计模式等来初始化所需的默认值。
public FunctionButton4()
if(DesignerProperties.GetIsInDesignMode)
this.MinHeight = 30d; /// Min Height or Height whichever is your concern
this.MinWidth = 75d;
【讨论】:
不,他们也什么都不做。它们只会影响控件本身在设计器中的显示方式。 能否详细说明一下。 当我想在例如一个窗口:在设计器中,我打开工具箱,选择我的控件,然后在窗口中单击。插入的控件有 Width=75 而不是 Width=64,同样,Height 和 Content 也不是我想要的默认值。使用的默认值(例如 Width=75)是 Button 的默认值,我的控件就是从它派生的。 我已经更新了代码 sn-p。检查是否是您需要的。 遗憾的是没有。如果我对 MinHeight 和 MinWidth 使用 64,我会得到控件显示为 75x64 的特殊行为,但在“属性”窗格中,高度显示为 25!? 75x64 似乎是合理的,因为我现在阻止它设置低于 64 的值,但是与“属性”窗格的不一致有点令人不安......【参考方案3】:我以前没用过,但我相信这就是DependencyProperty.OverrideMetadata 的用途。
在您的类中,您将添加一个静态构造函数,在该静态构造函数中,您将调用 OverrideMetadata,传递一个带有新默认值的 PropertyMetadata。例如:(理论,未经测试)
static FunctionButton4()
WidthProperty.OverrideMetadata(
typeof(FunctionButton4), new PropertyMetadata(64));
HeightProperty.OverrideMetadata(
typeof(FunctionButton4), new PropertyMetadata(64));
【讨论】:
以上是关于新手求问,wpf的控件textextbox如何控制只能输入数字和一个小数点的主要内容,如果未能解决你的问题,请参考以下文章