返回首页

{A}简介
这篇文章是关于一个C#/ WPF的。NET 4.0数字编辑控制??代码> NumberBox??这使用户能够输入数字。我曾试图弥补这种控制尽可能灵活和不使用太多的假设。我也走了出去我的方式来发展最高的质量控制可能。启用/禁用,调整大小的BorderThickness和所有其他的标准控制性能应该按预期工作。 ??代码> NumberBox?允许编号,以不同的方式进入,从而支持各种文化。输入的数字,可使用系统格式化或无论程序员设置它与重载。一般概念
在这个简单的控制,我已经添加了大量的属性。现实的原因,应该可以设置这些风格,所以younbsp;可以配置为应用程序中使用的所有控制的所有这些一次。因此,所有这些都是依赖属性,除了从控制初始化和检索值的属性。
更多的澄清,我有分为3个类别,这些属性:影响控制值的类型和格式的属性。我会调用这些??强>价值属性??影响到控制方式输入用户类型的属性。基础值不会受到影响。让我们的标签这些??强>输入属性??属性只影响显示值。调用这些??强>显示属性??
为了有一个真正意义上的国际的控制,我已经使用数字系统设置。在我的Windows 7机器,可以通过点击"控制面板配置?? "时钟,语言和区域? "更改日期,时间或数字格式,最后按??"附加设置...按钮右下角??{S0}全局属性CtrlFlags
字节组成一个或几个值低于一个标志:{C}
输入属性 - 默认代码> AllowMain | AllowNegatives????科学记数法,AllowMain标志AllowScientific之上,设置了。 AllowScientific自身没有任何效果。
这显然是不可能在XMAL设置标志。见。然而,这不是一个大问题,因为itnbsp;可以很容易地计算短期价值和直接通过这条。这是确定的,如果你不改变的标志值(不应改变反正)。例如:允许只有积极的分数:设置为2,设置的所有标志,设置为15,允许主,底片,和科学符号,设置为13。
设置AllowNegatives时,负输入相同的方式,因为它是在一个计算器:只需按负的符号按钮(通常是减号'-').插入符的位置并不重要,只要控制是获得键盘输入焦点。
设置AllowScientific时,科学记数法是可能的。插入符号必须是thenbsp;后立即开始或它的主要是有可能进入一个"e"或"E"。这是不可能进入空间后或与上一小部分元素,AllowFractions标志设置时插入符号"E"或"E"。一个"e"或"E"后的数字可能只是一个正整数。默认情况下,输入一个数字与AllowScientific出口扩大,所以它基本上提供了一个用于输入长数字速记。你只需要键入quot; 1.23e12quot;,而不是quot; 1230000000000quot;如果用户输入一个"e"或"E"没有下面的数字,假设该条目是quot; e0quot;或"; E0quot",这是10功率0,这是1。因此,在字段值1退出时进入只有'E'或'E'或'E'或'E'是被忽略,如果按照前面的数字。出现这种情况,如果ScientificDisplayType没有设置为ExpandOnExit。在科学节的价值仅仅是被忽略,如果过大而不能举行一个小数。
AllowNegSci标志设置时,有可能进入负,如"E - 9"科学。要做到这一点,按负的符号(通常是' - ')当插入符的位置后,'E'或'E'(之前的空间,如果AllowFractions还设置)。如果ScientificDisplayType ExpandOnExit,这是建议,DecimalPlaces设置为-1。这样做,否则可能会显示类似'0 .00'(见DecimalPlaces节以了解更多信息)。只如果AllowScientific有意义还设置。
设置AllowFractions时,有可能输入分数。总是由整数,没有浮点是在这些允许的。有2个方案:AllowMain还设置。用户必须键入空格键按钮(''),分开的主要部分的分数。如果一个条目,如quot; 1234quot;输入,空间被忽略,价值被认为是quot; 1234quot;上退出。如果输入一个条目,如quot; 123 12quot;或"123 12/quot;,这被认为是为quot; 123 12/1quot。如果键入"12 / 16quot;,这被认为是为quot; 12 1/16quot;从本质上讲,斜线两边的价值被认为是一个'1'如果留空。AllowMain没有设置。键入一个空格是不允许的。同样,如果任一斜线"/"方为空,它被认为是一个'1'。如果你只需要输入一个数字quot; 1234quot;,这将成为quot; 1234/1quot;退出。
复述,数字输入,如下图所示:
在奥兰治,负号段,这可能是前缀或后缀,取决于文化或设置粉红,主要号段在淡蓝色的,科学的号段在浅紫色,空间浅绿色,分数部分

public decimal DecValue { get; set; }

输入属性 - 默认值是空的。这不是一个依赖项属性,因此不能在样式设置。这个属性允许我们主要和科学科的值来设置和检索。该值存储在一个小数。如果您需要设置/获取分数部分的值,使用下面描述的NumValue财产。NumValue
public NumberValue  NumValue { get; set; }

其中:
public struct NumberValue

{

    public decimal Main;

    public long Numerator, Denominator;

}

输入属性 - 默认值是空的。这不是一个依赖项属性,因此不能在样式设置。这个属性允许我们来设置和检索所有值。主要和科学节中的值存储在NumberValue主要领域。分子和分母分别存储在分子和分母领域。分子采取的主要领域相同的标志,这是合乎逻辑的的。例如:-1 3 / 4 = - (1 3 / 4)= -1 -3 / 4 属性时适用AllowMain标志设置
下面的属性只适用于AllowMain标志CtrlFlags财产。DecimalPlaces
public short DecimalPlaces { get; set; }

Value属性 - 默认值是2。这台/得到允许小数点分隔符后的小数位的数目。如果设置为0,用户可以不再进入小数点分隔符。如果设置为负数,小数点分隔符后的小数数不再受限制。
DecimalPlaces设置为负数时,显示的十进制空间数的规则如下:当ScientificDisplayType设置ExpandOnExit,扩大值的小数点分隔符后的数字是由输入的数字小数点符号减指数后的初始数量。如果这个值小于零,没有数字显示小数点符号后,它本身是不显示。例:1.234e - 5,小数点符号后的数字为3 - (-5)= 8。另一个例子:1.67e12,数字显示的数字:2 - 12 = -10 <0,所以没有数字显示。当设置一个初始值,使用NumValue或DecValue:如果这个值是0,小数点符号后没有数字显示。否则,值GT = 1或LT = -1;,将显示四个非零数字的小数点分隔符后。当它遇到了一个零,不再显示下面的数字。例如:12345.6789将显示等。 12.309将显示为12.3。 1.234567将显示为1.2346否则,对于一个|值| <1,计算需要一个额外的四种可能的小数的数量,使用上述相同的规则。例:0.0012345 0.00000001将显示,将显示0.000000012345678将四舍五入为0.000000012346。DecimalSeparatorType
public DecimalSeparatorType DecimalSeparatorType { get; set; }

其中:
public enum DecimalSeparatorType : byte

{

    System_Defined,

    Point,

    Comma

}

输入属性 - 默认代码> System_Defined????在英国或美国,这一点是使用"PI = 3.14?这样一个数字作为小数分隔符?在法国,一个逗号,而不是使用,在"PI = 3,14??此属性使NumberBox取代系统设置。GroupSeparatorType
public GroupSeparatorType GroupSeparatorType { get; set; }

其中:
public enum GroupSeparatorType : byte

{

    System_Defined,

    Comma,

    Point,

    Space,

    HalfSpace

}

显示属性 - ????默认是代码>半空间(???????和没有代码> System_Defined,因为我认为代码>半空间提供了一个更好的显示)。此属性获取/设置通常用于分离块在一个数字的3位数的符号。在美国或英国的一个逗号是经常使用,但有时也是一种空间。在法国,一个点是用来代替一个逗号。 ??代码>半空间??选项是不能作为一个标准的系统设置,这是一个遗憾,因为我觉得空间的差距过大。GroupSize
public short GroupSize { get; set; }

显示属性 - 默认值是3。大批往往分为3位数的块。此属性可以更改一个值大于3。在法国,电话号码通常显示在2小数为实例块。{S2}属性时适用AllowNegatives标志设置
下面的属性只适用于当AllowNegatives标志设置CtrlFlags属性和用户输入负数。NegativeSignSide
public NegativeSignSide NegativeSignSide { get; set; }

其中:
public enum NegativeSignSide : byte

{

    System_Defined,

    Prefix,

    Suffix

}

输入属性 - 默认代码> System_Defined????在一些文化中,负数,而不是前缀后缀的负面符号。此属性允许您使用的系统设置(默认),或指定是否负号应数量的前缀或后缀。如果你选择了吗??代码> System_Defined??假设它是前缀,如果系统格式设置??1.1)?? ??1.1???? 1.1??否则,它的后缀。 NegativePatternType
public NegativePatternType NegativePatternType { get; set; }

其中:
public enum NegativePatternType : byte

{

    System_Defined,

    Symbol_NoSpace,

    Symbol_Space,

    Parentheses

}

显示属性 - 默认代码> System_Defined????负的模式可能会显示不同的系统允许??1.1)?? ??1.1?? ? 1.1?? ?.1 - ?? ?.1 - ??如果你选择了吗??代码> Symbol_NoSpace??格式是1.1或0.1????? - ??如果你选择了吗??代码> Symbol_Space??,格式是?? 1.1或0.1???? - ??如果你选择了吗??代码>括号??格式是?1.1)??如果选择了吗??代码> System_Defined??格式应在系统设置,除了这个属性是被NegativeSignSide取代。因此,举例来说,如果系统设置为0.1?? - ?? NegativeSignSide是前缀,应比结果显示:?? 1.1?? ?,而不是0.1 - ??系统设置空间被保留。NegativeTextBrush
public Brush NegativeTextBrush { get; set; }

显示属性 - 默认是空的(未设置)。这个属性允许你设置在不同的颜色从正数负数。通常的做法是显示红色的底片。NegativeSignType
public NegativeSignType NegativeSignType { get; set; }

其中:
输入属性 - 默认代码> System_Defined负数,据我所知由减号表示(??????.有一个默认的设置,允许你代表负???? ??????此属性以外的一个标志号码允许你重载默认设置减号。NegativeSignSide =类型的前缀或System_Defined??1.1)?? ??1.1???? 1.1??NegativeSignSide =后缀或类型System_Defined 0.1 - ???或0.1?? - ??属性时适用AllowScientific标志设置
下面的属性只适用于AllowScientific和AllowMain标志设置CtrlFlags财产和用户输入的数字紧随一个"e??或"E??ScientificDisplayType
public ScientificDisplayType ScientificDisplayType { get; set; }

其中:
public enum ScientificDisplayType : byte

{

    CapitalE,

    SmallE,

    Pow10,

    ExpandOnExit

}

显示属性,除了选择??代码> ExpandOnExit??这会影响输入。默认值是什么??代码> ExpandOnExit??{五}使用代码
使用的代码应该是非常简单的,并符合XAML的标准,除了设置/获取从控制值的属性。我已经提供了样品中的例子。
原型的风格:
使用的例子:
<local:NumberBox x:Name="NumBoxSty1"

Style="{StaticResource NumberBoxStyle}"



HorizontalAlignment="Stretch"

Margin="15,30,15,0" VerticalAlignment="Top"/>

{中六}Silverlight 4的版本
我添加了一个Silverlight 4中,我下载不与我的Visual Studio 2010版本附带的版本控制。 Silverlight 3中有太多的问题,一个简单的XAML声明,如前景= quot; {绑定前景的ElementName =根} quot;将无法正常工作,例如正确。
从WPF最大的变化是更换所有的FormattedText的实例,而不是在Silverlight与TextBox的实例。CoerceValueCallback
是不是可以,它是不​​可能的复位已经定义DependencyProperties的默认值。这意味着你明确需要设置的BorderThickness客户NumberBox实例1和背景为白色,否则没有边界的一个透明的NumberBox。例如:
有没有PreviewKeyDown事件,我不得不使用KeyDown来代替。此事件并不总是按下按钮接收邮件。例如,当第一次按下"首页??"按钮,没有收到邮件。这意味着你不能系统设置插入符与WPF版本,负号后。我已经离开WPF中版,希望未来版本的Silverlight将有功能相同的函数处理事件。
,如果一个NumberBox的高度字符内未足额显示,然后得到了一个空白时显示不活跃。这是因为DisplayNumEdit的领域??代码>文字??出于某种原因的变化。
否则,一切的重要工作得很好,和世界粮食计划署版本的所有新的依赖项属性在Silverlight。行为以及相同。
我觉得,随着互联网的日益增加的重要性,它是有控制的网页版本的关键。
{七} 兴趣点
控制支持复制/粘贴:粘贴在错误的格式控制字符串是不可能的,当右击代码> NumberBox???? "粘贴??被禁用。
同样拖放:下降是无效的格式是一个字符串,它是不可能的。插入发生在哪个点下降时,可能没有什么是用户预期。不过,我认为这将是进入了这样一个控制反正这样不寻常的值。在任何情况下,它应该永远不可能输入格式错误的字符串。
这种控制只使用标准的控制??代码的TextBox??所以应该支持所有的主题,应该没有问题。我一直无法得到标准的禁用控件的文本颜色。我曾用一个标准值#FF6D6D6D。不幸的是,SystemColors似乎并不返回任何值相对应的是目前在我的电脑设置了主题。
我不完全使用一个网格,两个文本框和DisplayNumEdit一个用户控件,一个单一的控制所有的舒适。一个更轻量级的解决办法可能是可行的的。不过,我也可能会遇到这样做的主要障碍。
有没有最低或最高和无属性,处理。如果数量太大,则不会抛出异常。等处理所需的修改,都不难实现,但我留下这样的变化,以使用此代码的开发人员。最好的解决办法可能是DecValue和NumValue方法抛出错误。我不愿作出任何属性抛出未捕获的异常,因为如果开发人员使用此示例忘记的尝试??代码> catch块,大概是这样的代码,是会得到难辞其咎。
最后,我相信你已经下载的代码之前,发现问题负载。我已经我的方式来解决任何问题我已经意识到。但是,如果您找到任何一个错误的机会,请让我知道。我也想知道潜在的改进。承认
在写这个控制的困难之一是在猜测用户和开发人员的要求。对于这一点,我看了一个类似的管制的意见,这在旧的MFC时间:。这给了我的科学记数法和不同的负面格式的支持的想法。否则,显示分数,显示为红色,3位数字和科学记数法输入大量的速记ExpandOnExit集之间的间距从我的经验,这样做的用户界面开发的底片是我曾经工作的一个财务软件公司。我设计了这个用户控制,以满足需求的最大数量。历史2011年6月1日:初始版本六月十一日,2011年:与下面的错误修复和改进的新版本:不再可能进入负号??代码> AllowNegatives??不设置标志。如果标志??代码> AllowFractions??没有设置,不再使用NumValue财产可以显示分数。NegativeTextBrush现在可以正确地停用时以前负项变为正。???代码> ExpandOnExit现在正常工作时DecimalPlaces LT; 0。现在可以正常工作吗?????代码> NumValue和代码> DecValue属性时DecimalPlaces LT; 0。正确的行为讨论时DecimalPlaces LT; 0。新的标志??代码> AllowNegSci??允许负指数。6月20日,2011年:Silverlight 4的版本添加和小bug修正:负号被删除从科学价值进入负值时,是一个价值2负的迹象没有正常工作吗??。 ?1.234e - 5??没有。

回答

评论会员:游客 时间:2012/01/27
。谢谢很好的工作任何建议实施一个DataGrid的山坳?codeprelang="xml"spanclass="code-keyword"</spanspanclass="code-leadattribute"DataGridTemplateColumn/spanspanclass="code-attribute"Header/spanspanclass="code-keyword"="/spanspanclass="code-keyword"Totaleoperazione"/spanspanclass="code-keyword">/spanspanclass="code-keyword"</spanspanclass="code-leadattribute"DataGridTemplateColumn.CellTemplate/spanspanclass="code-keyword">/spanspanclass="code-keyword"</spanspanclass="code-leadattribute"DataTemplate/spanspanclass="code-keyword">/spanspanclass="code-keyword"</spanspanclass="code-leadattribute"TextBlock/spanspanclass="code-attribute"Text/spanspanclass="code-keyword"="/spanspanclass="code-keyword"{BindingTotOP,ConverterCulture=it-IT,StringFormat='{}{0:C}'}"/spanspanclass="code-keyword"//spanspanclass="code-keyword">/spanspanclass="code-keyword"</spanspanclass="code-keyword"//spanspanclass="code-leadattribute"DataTemplate/spanspanclass="code-keyword">/spanspanclass="code-keyword"</spanspanclass="code-keyword"//spanspanclass="code-leadattribute"DataGridTemplateColumn.CellTemplate/spanspanclass="code-keyword">/spanspanclass="code-keyword"</spanspanclass="code-leadattribute"DataGridTemplateColumn.CellEditingTemplate/spanspanclass="code-keyword">/spanspanclass="code-keyword"</spanspanclass="code-leadattribute"DataTemplate/spanspanclass="code-keyword">/spanspanclass="code-keyword"</spanspanclass="code-leadattribute"local:NumberBox/spanspanclass="code-attribute"x:Name/spanspanclass="code-keyword"="/spanspanclass="code-keyword"TotOP"/spanspanclass="code-attribute"Style/spanspanclass="code-keyword"="/spanspanclass="code-keyword"{StaticResourceNumberBoxStyle}"/spanspanclass="code-keyword"//spanspanclass="code-keyword">/spanspanclass="code-keyword"</spanspanclass="code-keyword"//spanspanclass="code-leadattribute"DataTemplate/spanspanclass="code-keyword">/spanspanclass="code-keyword"</spanspanclass="code-keyword"//spanspanclass="code-leadattribute"DataGridTemplateColumn.CellEditingTemplate/spanspanclass="code-keyword">/spanspanclass="code-keyword"</spanspanclass="code-keyword"//spanspanclass="code-leadattribute"DataGridTemplateColumn/span/pre/code编辑将显示一个空白单元格?关于安德烈
克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
!谢谢你,安德烈对不起,我没有时间在这个阶段彻底调查。我猜DisplayNumEdit成员函数:保护覆盖无效的OnRender(DrawingContextdrawingContext)不会被调用时NumberBox插入里面的DataGrid。也许一个解决方案,将使用同样的方法绘制DisplayNumEditSilverlight版本?请注意:在Silverlight不同的事情有很多,所以只有DisplayNumEdit文件需要被复制,并作出相关的小规模改建(XAML语法略有不同)。请记住,也将在主题/generic.xaml中的代码(如果我不敢说的话:??别人忘记看到另一个以下评论)感谢您报告此,我可能在未来的版本中的OnRender功能完全消除。欢呼声,克里斯托弗
克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
你知道吗,我觉得自己像一个完整的屁股。我问你,使我们的Silverlight版本,和你还跟花时间做。然后,我问题后发表的问题......我希望这是最后一次,虽然:如你所知,我们得到最后解决的重点问题,但现在我有一个很奇怪的问题:如果我在代码中NumberBox的初始值设置,不显示在号码框中,直到你实际点击/对焦。当您删除的重点,选择一些其他的控制值再次消失。我有另外一个小的演示项目在这里[代码]。你觉得我能说服你有一个看起来太吗?我会很感激!开放式保税仓:更新了以前的重点问题,问题的微小变化。示范项目中的代码是欢呼声,约翰尼J.为什么我不能像约翰适用?-我,2011年4月{BR}-----Beidh企之窗,caint阿古斯畅饮againn-肖恩禁止布雷斯纳克{BR}-----大mihiSIScrustumEtruscum暨综合在EO{BR!}-----只是因为一个东西是新的,并不意味着它的更好-1932年9月4日,威尔罗杰斯修改,2011年7月14日(星期四)3:48
克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
在你送我的焦点问题的样本,该文件主题\generic.xaml中丢失。这个文件的情况下故障报告是一致的。imgsrc=http://www.orcode.com/img/ico/smiley_smile.gif
克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
咄,愚蠢的我...imgsrc=http://www.orcode.com/img/ico/smiley_doh.gif我通常程序的WinForms,这是我在Silverlight中的第一个应用程序,所以它需要一个习惯的位(很多)。我倾向于忘记样式,因为我已经习惯了一切,做一个控制类控制本身。感谢了很多设置我直。有另外5个。imgsrc=http://www.orcode.com/img/ico/smiley_wink.gif为什么我不能像约翰适用?-我,2011年4月{BR}-----Beidh企之窗,caint阿古斯畅饮againn-肖恩禁止布雷斯纳克{BR}-----大mihiSIScrustumEtruscum暨综合在EO{BR!}-----只是因为一个东西是新的,并不意味着它的更好-威尔罗杰斯,1932年9月4日
克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
没问题的。我很高兴是有帮助的
。克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
我尝试测试您的Silverlight版本,它似乎工作得很清楚除了一件事:如果我尝试设置使用focus()方法的代码就可以了重点明确,它不工作。它的工作原理与普通文本框,虽然,但不是你的控制。你有任何想法,为什么不呢?为什么我不能像约翰适用?-我,2011年4月{BR}-----Beidh企之窗,caint阿古斯畅饮againn-肖恩禁止布雷斯纳克{BR}-----大mihiSIScrustumEtruscum暨综合在EO{BR!}-----仅仅因为一件事是新的,并不意味着它的更好-1932年9月4日,威尔罗杰斯修改,2011年7月14日(星期四)上午02:38
克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
嗨,我添加了一个按钮,我按一下按钮,将焦点设置到一个数字框。它似乎完全和我一起工作。我曾尝试与Explorer和Firefox。您是否使用了Silverlight4中
?乔治天鹅
评论会员:游客 时间:2012/01/27
是的,这会工作。这个问题似乎出现时的数量框已被禁用前和启用前设置焦点。我创建了一个小型示范项目能重现问题。你认为我可以让你看看它有吗?你可以在这里找到它的代码删除]最好的问候,约翰尼为什么我不能像约翰适用?-我,2011年4月{BR}-----Beidh企之窗,caint阿古斯畅饮againn-肖恩禁止布雷斯纳克{BR}-----大mihiSIScrustumEtruscum暨综合在EO{BR!}-----仅仅因为一件事是新的,并不意味着它的更好-1932年9月4日,威尔罗杰斯修改,2011年7月13日(星期三)6:45
克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
您好,谢谢您指出此故障,并感谢您的样品。根据MSDN文档,必须有一个控制IsTabStop设置为true。要纠正你的问题:(1)更改NumberBox.xaml,所以它包含行:IsTabStop="真"(经过D马上说:DesignHeight="23"D:DesignWidth="120")。(2)添加行NumTextBox.Focus()功能NumberBox.xaml.csRoot_GotFocus。(3)删除线numValue.Focus();LayoutRoot_Loaded在您的功能。如果离开这一行,你会得到奇怪的行为,当你点击其他单选按钮。这部分我花大部分的时间,直到我发现它没有正常工作,一个TextBox(启用TextBox和txtText.Focus();在LayoutRoot_LoadedTextBox的插入符号不会显示如预期){。BR}奇怪的是它工作得很好,如果NumberBox没有被禁用
。ring_0
评论会员:游客 时间:2012/01/27
!大,克里斯托弗非常感谢您的帮助!你是最棒的!为什么我不能像约翰适用?-我,2011年4月{BR}-----Beidh企之窗,caint阿古斯畅饮againn-肖恩禁止布雷斯纳克{BR}-----大mihiSIScrustumEtruscum暨综合在EO{BR!}-----只是因为一个东西是新的,并不意味着它的更好-1932年9月4日,威尔罗杰斯
克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
顺便说一句:你问我删除numValue.Focus(LayoutRoot_Loaded),没关系,它也无法正常工作了。作为一个事实上:由于RadioButton是默认选中的数量框,我希望我的用户控制开始的数字框具有焦点。但我似乎把numValue.Focus()无论身在何处,这是行不通的。号码"框中仍然是集中在第一?!?!?!imgsrc=http://www.orcode.com/img/ico/smiley_confused.gif你有什么想法,我怎么做呢?为什么我不能像约翰适用?-我,2011年4月{BR}-----Beidh企之窗,caint阿古斯畅饮againn-肖恩禁止布雷斯纳克{BR}-----大mihiSIScrustumEtruscum暨综合在EO{BR!}-----只是因为一个东西是新的,并不意味着它的更好-威尔罗杰斯,1932年9月4日
克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
好哇!我已经解决了:见:http://stackoverflow.com/questions/124649/how-do-i-give-a-textbox-focus-in-silverlight在您的LayoutRoot_Loaded功能,添加行:System.Windows.Browser.HtmlPage.Plugin.Focus();然后,所有您需要做的的是设置numValue重点。这一个TextBox和一个NumberBox罚款
。约翰Whitmire
评论会员:游客 时间:2012/01/27
它没有工作在我的现实生活情况。我在子窗口的号码框。号"框中使用上面的方法,将得到重点很简单的,然后它会再次消失。这解决方案仅适用于如果你正在运行的应用程序在浏览器中,浏览器的情况下。我发现另一种解决方案imgsrc=http://www.orcode.com/upimg/2012_01_27_22_17_17_6.png]:codeprespanclass="code-keyword"private/spanspanclass="code-keyword"void/spanChildWindow_GotFocus(spanclass="code-keyword"object/spansender,RoutedEventArgse){spanclass="code-keyword"if/span(_firstTime==spanclass="code-keyword"true/span){textBox1.Focus();_firstTime=spanclass="code-keyword"false/span;}}/pre/code由于海报指出:这是不是一个漂亮的解决方案,但它为我的作品。它为什么要这么辛苦,将焦点设置到在Silverlight中的具体控制?微软真的需要解决这个问题!为什么我不能像约翰适用?-我,2011年4月{BR}-----Beidh企之窗,caint阿古斯畅饮againn-肖恩禁止布雷斯纳克{BR}-----大mihiSIScrustumEtruscum暨综合在EO{BR!}-----只是因为一个东西是新的,并不意味着它的更好-威尔罗杰斯,1932年9月4日
克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
好!我很高兴你已经能够解决您的问题
克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
非常透彻的一块工作,期待着数字上/下控制。请问,你为什么测试分别为null或空字符串,而不是使用IsNullOrEmpty()扩展?我的理解是,在IsNullOrEmpty()的错误已得到修复,但我可能是错
。克里斯托弗卡马乔
评论会员:游客 时间:2012/01/27
谢谢你非常。我不知道IsNullOrEmpty()函数。我需要做的就是这么简单,它没有发生,我寻找的功能。非常感谢你建议,我会在未来的样品版本中添加。我已经不打算加入向上/向下键。已经有人问我是什么??看到底部的消息,我的答复。在CodePlexwpftoolkit.codeplex.com/控制。我觉得上/下控制不同的控制,例如百分比或基点更为恰当。在此NumberBox控制,我问自己的问题,是什么样的价值,我们希望递增/递减?由于没有一个可输入值的标准范围内,它是不可能知道这​​一点。否则,再次感谢你,如果你有任何改善建议或发现任何错误,请让我知道
。图莎尔布哈特
评论会员:。真棒 时间:2012/01/27