【问题标题】:Query regarding resetting of cursor游标复位查询
【发布时间】:2012-10-04 06:30:13
【问题描述】:

我们在 Silverlight 应用程序中将 double 类型的属性绑定到文本框,在运行应用程序时更改文本框中的值时,光标移动到第一位,不允许用户输入值。

例如:如果用户尝试输入 99999.9 ,当我们尝试输入“.”时,在 99999 值之后,光标转到第一个位置,因此不允许用户输入 99999.9

当我们在文本框绑定属性中添加 UpdateSourceTrigger=PropertyChanged 时,就会出现这个问题。当我们删除此属性时,文本框将以正常方式工作。

请帮我解决这个问题。

谢谢

XAML:

<TextBox x:Name="txtUtil" IsReadOnly="{Binding IsReadable,Mode=TwoWay}" Text="{Binding Utilization,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True,ValidatesOnExceptions=True}" Width="70" Height="30"/>

C#

public double Utilization { 
  get { return utilization; } 
  set { utilization = value; 
        OnPropertyChanged("Utilization");
  }
}

【问题讨论】:

  • 可以改用DependencyProperty 来解决这个问题吗?
  • 除了引发PropertyChanged 事件之外,您的OnPropertyChanged 方法中是否发生了任何事情?我无法使用提供的代码重现您描述的行为。
  • 当我们在服务器中托管应用程序并从本地浏览链接时发生这种情况。
  • 这方面有什么进展吗?你的 C# 代码在哪里?在PageUserControl 中还是一个单独的类?
  • 我还没有找到任何解决方案。我遵循 MVVM 模式。因此 c# 代码位于视图模型文件(单独的类)中。

标签: silverlight silverlight-4.0


【解决方案1】:

请使用 textchanged 事件并将 selectionstart 属性设置为 textlength

【讨论】:

  • 我使用了 txtUtil.SelectionStart = txtUtil.Text.Length。这不是重置光标位置。但这会引发其他问题,例如……不允许我输入小数点“。”直到我输入最大长度的数字。例如,如果文本框的最大长度为 10,那么在我输入所有 10 位数字之前,它不允许我输入小数点
  • 如果您的号码长度大于 10,为什么要使用 maxlength
  • 我们要求控件只能接受 10 位数字和两位小数
猜你喜欢
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多