몇 가지 사용자 지정 동작과 트리거를 구현하여 XAML을 통해 추가했습니다. 런타임에는 문제가 없지만 디자인 타임에 Cider 디자이너보기가로드되지 않도록하고 Blend에서도 문제를 일으킬 수 있습니다. 물론 확인하지는 못했습니다.Silverlight의 사용자 지정 동작 및 트리거에 대한 디자인 타임 문제
다음은 내가 동작 중 하나에 대해 구현 한 내용의 개요입니다. 잘하면 누군가 내가 누락 된 것을 지적 할 수 있습니다.
동작은 다음과 같습니다.
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/>
요소는 구불 구불 강조하고 수집 또는 'BehaviorCollection' 유형의 사전에 추가 할 수 없습니다 오류
에게 유형 'UpdateOnTextChangedBehavior'의 값을보고합니다. 디자이너보기를 보려고하면 디자이너가로드하지 못합니다. 디자이너는을로드하기 전에 수정해야하는 오류가 있습니다.
:
마찬가지로, 하나의 경우 당신은 볼 수 있습니다. 코드 숨김의 텍스트 상자 또는 비헤이비어로 다른 작업을 수행하고 있습니까? –
Dan, 네 말이 맞아. 실제 응용 프로그램에는이 동작 외에도 두 가지 작업이 있으며, 그 중 하나가 리플렉션을 사용하여 종속성 속성 값을 설정하는 메서드를 호출하는 것을 볼 수 있습니다. 아마도 그것이 디자인 타임에 작동하지 못하게하는 원인 일 것입니다. –