0
我的解決方案編譯得很好,沒有錯誤,但是當我運行我的Silverlight項目時出現此錯誤:在'TextBoxKeyUp'類型中未找到可附加屬性'Command'。我在過去創造了成功的行爲,而且這個行爲的代碼相對來說不重要。Prism AttachedProperty命令在運行時未找到
XAML代碼片段:
xmlns:prismCmd="clr-namespace:AGMGUI.Infrastructure.AttachedProperty;assembly=AGMGUI.Infrastructure"
<TextBox Grid.Column="2" Text="{Binding InputFieldText, Mode=TwoWay}"
TabIndex="1" Width="100" Height="24" HorizontalAlignment="Left"
VerticalAlignment="Center" prismCmd:TextBoxKeyUp.Command="{Binding KeyUpCommand}"></TextBox>
附加屬性:
public static class TextBoxKeyUp
{
#region Command attached property
public static ICommand GetCommand(DependencyObject obj)
{
return (ICommand)obj.GetValue(CommandProperty);
}
public static void SetCommand(DependencyObject obj, ICommand value)
{
obj.SetValue(CommandProperty, value);
}
// Using a DependencyProperty as the backing store for Command. This enables animation, styling, binding, etc...
public static readonly DependencyProperty CommandProperty =
DependencyProperty.RegisterAttached("Command", typeof(ICommand), typeof(TextBoxKeyUp), new PropertyMetadata(OnSetCommandCallback));
private static void OnSetCommandCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
{
TextBox element = dependencyObject as TextBox;
if (element != null)
{
TextBoxKeyUpBehavior behavior = GetOrCreateBehavior(element);
behavior.Command = e.NewValue as ICommand;
}
}
private static TextBoxKeyUpBehavior GetOrCreateBehavior(TextBox element)
{
TextBoxKeyUpBehavior behavior = element.GetValue(KeyUpBehaviorProperty) as TextBoxKeyUpBehavior;
if (behavior == null)
{
behavior = new TextBoxKeyUpBehavior(element);
element.SetValue(KeyUpBehaviorProperty, behavior);
}
return behavior;
}
#endregion
#region KeyUpBehavior attached property
public static TextBoxKeyUpBehavior GetKeyUpBehavior(DependencyObject obj)
{
return (TextBoxKeyUpBehavior)obj.GetValue(KeyUpBehaviorProperty);
}
public static void SetKeyUpBehavior(DependencyObject obj, TextBoxKeyUpBehavior value)
{
obj.SetValue(KeyUpBehaviorProperty, value);
}
public static readonly DependencyProperty KeyUpBehaviorProperty =
DependencyProperty.RegisterAttached("KeyUpBehavior", typeof(TextBoxKeyUpBehavior), typeof(TextBoxKeyUp), null);
#endregion
#region CommandParameter attached property
public static object GetCommandParameter(DependencyObject obj)
{
return (object)obj.GetValue(CommandParameterProperty);
}
public static void SetCommandParameter(DependencyObject obj, object value)
{
obj.SetValue(CommandParameterProperty, value);
}
public static readonly DependencyProperty CommandParameterProperty =
DependencyProperty.RegisterAttached("CommandParameter", typeof(object), typeof(TextBoxKeyUp), new PropertyMetadata(OnSetCommandParameterCallback));
private static void OnSetCommandParameterCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
{
TextBox element = dependencyObject as TextBox;
if (element != null)
{
TextBoxKeyUpBehavior behavior = GetOrCreateBehavior(element);
behavior.CommandParameter = e.NewValue;
}
}
#endregion
}
有沒有人遇到過這個錯誤?
作爲測試,請嘗試將「命令」重命名爲「MyCommand」。我有一個偷偷摸摸的命令可能被保留。 – 2011-06-24 08:18:05