Silverlight中自定义行为和触发器的设计时问题

我已经实现了一些自定义行为和触发器,并通过XAML添加它们.它们在运行时工作正常但是在设计时阻止了Cider设计器视图的加载,并且可能会在Blend中引起问题,尽管我还没有确认.

以下是我为其中一个行为实施的内容概述;希望有人可以指出我所缺少的东西.

行为看起来像这样;

using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Interactivity;

namespace MiX.Core.UI.Silverlight
{
    public class UpdateOnTextChangedBehavior : Behavior<TextBox>
    {
        protected override void OnAttached()
        {
            base.OnAttached();
            this.AssociatedObject.TextChanged += OnAssociatedObjectTextChanged;
        }

        void OnAssociatedObjectTextChanged(object sender,TextChangedEventArgs e)
        {
            BindingExpression binding = this.AssociatedObject.GetBindingExpression(TextBox.TextProperty);
            if (binding != null)
            {
                binding.UpdateSource();
            }
        }

        protected override void OnDetaching()
        {
            base.OnDetaching();
            this.AssociatedObject.TextChanged -= OnAssociatedObjectTextChanged;
        }
    }
}

XAML中的实现看起来像这样;

<TextBox x:Name="Username" Text="{Binding Username,Mode=TwoWay}" BorderThickness="1" Style="{StaticResource TextBoxStyleGeneral}" Foreground="#FF333333" FontSize="10" BorderBrush="{x:Null}" Grid.Column="1" d:LayoutOverrides="GridBox" Margin="2,0" Grid.ColumnSpan="2" Background="{x:Null}" VerticalAlignment="Center" Grid.Row="1">
  <i:Interaction.Behaviors>
    <mixcore:UpdateOnTextChangedBehavior/>
  </i:Interaction.Behaviors>
</TextBox>

在XAML编辑器中< mixcore:UpdateOnPasswordChangedBehavior />元素以波浪形突出显示并报告错误“UpdateOnTextChangedBehavior”类型的值无法添加到“BehaviorCollection”类型的集合或字典中.尝试在“设计”视图中查看时,设计器无法加载,说明文档包含必须在加载设计器之前修复的错误.

解决方法

在Silverlight中,如果设计无法加载我们在代码中所做的更改,那么它就是silverlight中的错误.

Silverlight尚未设计为通过代码处理各种异常,例如,如果你确实有任何带有返回类型的代码,并且你没有在那里检查null,那么它再次加载设计器这个案例主要见于重写IValueConverter方法{x:静态} ……等等

您的代码没有任何问题,除非它编译正常并且不会抛出异常.
不要担心设计师.

同样,你可以看一个案例:
  http://connect.microsoft.com/VisualStudio/feedback/details/361509/xaml-designer-cannot-handle-typename-with-nested-classes

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...