几天前,我意识到在Silverlight中,为了始终更新任何texbox上的绑定(以验证每个KeyPress中的错误),我需要在系统中每个 TextBox中的TextChanged Event事件上使用以下代码:

TextBox txCtl = (TextBox)sender; if (txCtl != null)
{
    var be = txCtl.GetBindingExpression(TextBox.TextProperty);

    if (be != null)
    {
        be.UpdateSource();
    }
}

这段代码效果很好(来源: http : //forums.silverlight.net/t/51100.aspx/1 )。 问题是:我不想在每个具有CodeBehind的视图中都重复它,因此我决定制作一个自定义ViewBase,在其中放置此代码。 我所做的只是:

public class ViewBase : ChildWindow
{
    protected void tboxTextChanged(object sender, TextChangedEventArgs e)
    {
        TextBox txCtl = (TextBox)sender; if (txCtl != null)
        {
            var be = txCtl.GetBindingExpression(TextBox.TextProperty);

            if (be != null)
            {
                be.UpdateSource();
            }
        }
    }
}

然后我的视图现在是ViewBase,而不是UserControl,因此我还将XAML更改为:

<src:ViewBase x:Class="Oi.SCPOBU.Silverlight.Pages.CadastroClassificacao"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:Oi.SCPOBU.Silverlight.Pages" [...]

最后,在我的文本框中,我离开了事件,该事件引用了与往常相同的方法,但是现在该方法位于ViewBase中,而不是位于CodeBehind中:

<TextBox
   x:Name="tbxNome"
   Width="300"
   MaxLength="50"
   HorizontalAlignment="Left"
   TextChanged="tboxTextChanged"
   Text="{Binding DTOClassificacao.Nome, Mode=TwoWay, NotifyOnValidationError=True>

对我来说似乎很简单,但这是行不通的。 代码已编译,但是在运行时出现错误:“消息=无法分配给属性'System.Windows.Controls.TextBox.TextChanged'。[行:43位置:37]”,在InitializeComponent()方法上。

谁知道我该如何从基类向事件分配方法? 还是我真的必须在我拥有的每个视图中都重复此代码?

#1楼 票数:1 已采纳

为了始终更新任何texbox上的绑定(以验证每个KeyPress中的错误),我需要在系统中每个TextBox中的TextChanged Event事件上使用此代码

您是否尝试过UpdateSourceTrigger.PropertyChanged

<TextBox Text="{Binding Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

  ask by Piscies translate from so

未解决问题?本站智能推荐:

1回复

从Silverlight XAML调用基类方法

作为学习Silverlight的一部分,我试图创建一个基本的UserControl用作我继承的控件的起点。 这很简单,它仅定义了一些回调方法: 请注意这是问题的ClickToEditTextBox_KeyDown()方法! 现在,我有一个继承的控件,看起来如下(CheckboxL
2回复

Silverlight MVVM-基于按钮的单击事件,从View代码背后获取对ListBoxItem的引用

好的,我在Silverlight MVVM Light应用程序中具有以下XAML标记。 这是视图的一部分。 在视图代码背后的btnClearBodyMark的click事件中,我尝试使用.Parent属性向上遍历树,第一个父级是水平堆栈面板,然后它的父级是垂直堆栈面板,其父级是网格,但是随后
1回复

组合框打开时Silverlight Combobox Fire KeyDown事件

我有一个Silverlight Combobox(碰巧在StackPanel中),KeyDown事件上有一个事件处理程序。 处理程序仅在ComboBox关闭时才有效,因此只需点击2次就可以触发它。 有没有办法在ComboBox打开时触发KeyDown事件或执行等效操作?
1回复

Silverlight控件库-无法引用Generic.xaml的相对MergedDictionary

我为此而死。 我花了无数小时试图找出答案,但没有运气。 问题简短说明 在我的自定义控件类中,当我检查Application.Current.Resources [“ key”]时,我返回null。 这种“键”样式位于本地字典中,该字典应该由我的控制库的theme / generi
3回复

在Silverlight项目中引用.Web项目时遇到问题

我正在尝试通过遵循本文档来引用我的域服务。 以下两个声明可以正常工作 和 但我对此有问题 即使重新构建了整个解决方案,也会出现此错误: 未定义的CLR名称空间。 “ clr-namespace” URI指的是程序集中未包含的名称空间。 我尝试添加
1回复

Silverlight中的Combobox Selection Changed事件在更改列表项时显示错误

我正在创建一个组合框事件,同时更改了已更改的选择。 我的代码是 C# 在XAML中 我得到一个窗口,如下所示 谁能帮我这个!!
1回复

订阅长期对象事件时,我附加的DependencyProperty是否泄漏?

我一直在编写一个小的Silverlight帮助器类来实现一个附加属性,该属性可以绑定到ICollection / INotifyCollectionChanged并在绑定集合为空时切换目标对象的可见性。 我没有完全掌握有关内存管理和对象生命周期的DependencyProperty行为。
2回复

调用ListBox的SelectionChanged()事件时,如何为TextBlock设置动画?

在下面的代码中,我想在调用TextBlock的TextChanged()事件时启动动画。 但是当我尝试这段代码时,我得到一个错误... “无法分配给属性'System.Windows.EventTrigger.RoutedEvent'” 我迷路了,有人可以帮助我该怎么做?