新手求问,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"DesignHeightDesignWidth 就足够了。

编辑: 在您的控件构造函数中。通过检查控件是否处于设计模式等来初始化所需的默认值。

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如何控制只能输入数字和一个小数点的主要内容,如果未能解决你的问题,请参考以下文章

wpf中如何控制图片的位置

wpf怎么动态 控制控件位置c#代码

如何实现一个由鼠标移动的 WPF 控件,如滑块控件但 2D?

如何在VS2010 WPF设计器中控制自定义控件的默认属性

WPF如何制作导航控件

WPF|快速添加新手引导功能(支持MVVM)