2016-02-15 84 views
1

我想設置焦點RadNumericBox Telerik控制。控件沒有設置焦點值的屬性。屬性設置RadNumericBox焦點Telerik WPF

雖然,我可以在我的代碼後面通過獲取NumericTextBox的VisualChild並設置焦點值。

NumericTextBox box1 = VisualTreeUtilities.GetVisualChild<NumericTextBox>(RadNumericBox1); 
    box1.Focus(FocusState.Programmatic); 

但我需要改變ViewModel中的焦點。所以我在尋找一個屬性,這樣viewmodel可以被綁定到它。

回答

1

一般操作對焦等這樣的可視化程序,我建議你上UIElement創建自定義的附加屬性,然後當該屬性設置可以設置焦點UIElement

public static class FocusExtension 
    { 

     public static bool GetFocused(DependencyObject obj) 
     { 
      return (bool)obj.GetValue(FocusedProperty); 
     } 


     public static void SetFocused(DependencyObject obj, bool value) 
     { 
      obj.SetValue(FocusedProperty, value); 
     } 


     public static readonly DependencyProperty FocusedProperty = 
       DependencyProperty.RegisterAttached("Focused", 
       typeof(bool), typeof(FocusExtension), 
       new UIPropertyMetadata(false, OnFocusedPropertyChanged)); 

     private static void OnFocusedPropertyChanged(DependencyObject d, 
      DependencyPropertyChangedEventArgs e) 
     { 
      var uiElement = (UIElement)d; 
      var toSet = (bool)e.NewValue; 
      if (toSet) 
      { 
       uiElement.Focus(); 
      } 
     } 
    } 
+0

感謝很多的回覆! – Mullaly

+0

好的。這工作。但是,如果我將FocusExtension重命名爲RadNumericBoxFocusExtension,那麼我的xaml會顯示一個錯誤。我改變了DependencyProperty也爲typeof(RadNumericBoxFocusExtension), 我錯過了什麼? – Mullaly

+0

它是什麼錯誤,你如何使用這個擴展名? – Muds