2011-04-29 135 views
0

我已經擴展了Silverlight的AutoCompleteBox並重寫了OnDropDownClosed事件處理程序。這可以按預期工作,只是在DropDown關閉後組件會丟失焦點。關閉AutoCompleteBox失去焦點瀏覽器

爲了保持它,我必須改變什麼?

這裏是我的代碼:

namespace ITPole.Sphere.Application.Core.Controls 
{ 

    using System.Windows; 
    using System.Windows.Controls; 
    using System.Windows.Media; 

    public class CustomCompleteBox : AutoCompleteBox 
    {  
     public static readonly DependencyProperty SelectedAtCloseProperty = 
      DependencyProperty.Register(
       "SelectedAtClose", typeof(object), typeof(CustomCompleteBox), new PropertyMetadata(null)); 

     public object SelectedAtClose 
     { 
      get 
      { 
       return this.GetValue(SelectedAtCloseProperty); 
      } 

      set 
      { 
       this.SetValue(SelectedAtCloseProperty, value); 
      } 
     } 

     protected override void OnDropDownClosed(RoutedPropertyChangedEventArgs<bool> e) 
     { 
      base.OnDropDownClosed(e); 
      this.SelectedAtClose = this.SelectedItem; 

     } 

     protected override void OnTextChanged(RoutedEventArgs e) 
     { 
      base.OnTextChanged(e); 

      if (string.IsNullOrEmpty(this.Text)) 
      { 
       this.SetValue(SelectedAtCloseProperty, null); 
      } 
     } 

    } 
} 

而且在XAML用法:

<Controls1:CustomCompleteBox x:Name="portfolioAutoCompleteBox" 
          Grid.Column="1" 
          Grid.ColumnSpan="2" 
          Grid.Row="1" 
          Margin="2" 
          DataContext="{Binding Portfolio}" 
          Style="{StaticResource DefaultAutoCompleteBoxStyle}" 
          ItemTemplate="{StaticResource DescriptionItemTemplate}" 
          ValueMemberBinding="{Binding Description, Mode=TwoWay}" 
          SelectedAtClose="{Binding Value, ValidatesOnDataErrors=True, Mode=TwoWay}" 
          ItemsSource="{Binding Values}" 
          Text="{Binding Text, Mode=TwoWay}" 
          Behaviors:AutoCompleteBoxBehaviors.PopulatingCommand="{Binding PopulationCommand}" /> 

回答

0

您正在使用什麼版本的Silverlight?它適用於V4。

+0

我使用的是版本4. – 2011-04-29 09:22:29

+0

這是否意味着它是一個xaml問題? – 2011-04-29 09:51:07