2011-09-21 58 views
0

我看起來像這樣控制Tab鍵順序,它有幾個文本框如何控制而不禁用所有重點控制在這種情況下

[1 ][2 ][3 ][4 ] 

現在,在我的應用程序的控制正在形成的一個somekind的像

[1 ][2 ][3 ][4 ] 
[1 ][2 ][3 ][4 ] 
[1 ][2 ][3 ][4 ] 

矩陣現在我想設置1個3和4 IsTabStop = false所以用戶可以通過僅第二文本框選項卡。 完成之後,我發現1 3 4現在無法集中。令我驚訝的是,在WPF中這不是真的,所以它只是另一個Silverlight意想不到的限制!

http://msdn.microsoft.com/ru-ru/library/system.windows.controls.control.istabstop(v=vs.95).aspx

如何通過[2 ]計劃與我最初的黏合繼續嗎?

回答

1

我相信你可以擴展TextBox控件使其具有可聚焦性。見this post

附加屬性

public class Ex 
{ 
    public static bool GetIsTabStop(DependencyObject obj) 
    { 
     return (bool)obj.GetValue(IsTabStopProperty); 
    } 

    public static void SetIsTabStop(DependencyObject obj, bool value) 
    { 
     obj.SetValue(IsTabStopProperty, value); 
    } 

    // Using a DependencyProperty as the backing store for IsTabStop. This enables animation, styling, binding, etc... 
    public static readonly DependencyProperty IsTabStopProperty = 
     DependencyProperty.RegisterAttached("IsTabStop", typeof(bool), typeof(Ex), new PropertyMetadata(true, Callback)); 

    private static void Callback(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     var control = d as Control; 
     if (control != null) 
     { 
      control.IsTabStop = (bool)e.NewValue; 

      control.MouseLeftButtonDown += (sender, args) => 
      { 
       if (!control.IsTabStop) 
       { 
        control.IsTabStop = true; 
        control.Focus(); 
        control.IsTabStop = false; 
       } 
      }; 
     } 
    } 
} 

XAML

<TextBox HorizontalAlignment="Left" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Margin="215,49,0,0" RenderTransformOrigin="0,7.25"/> 
    <TextBox HorizontalAlignment="Left" local:Ex.IsTabStop="False" TextWrapping="Wrap" Text="TextBox" Margin="215,96,0,0" VerticalAlignment="Top"/> 
    <RadioButton Content="RadioButton" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="210,144,0,0"/> 
    <RadioButton Content="RadioButton" local:Ex.IsTabStop="False" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="213,183,0,0"/> 

基本上可以附加這這是一個從Control繼承任何東西。

+0

gahh多數民衆贊成soo hackish。我也得到了單選按鈕,更多的黑客公司..感謝鏈接+1 –

+0

在這種情況下,附加屬性是你的朋友。請看我更新的答案。 –

+1

感謝這是好多了,我想一個更好的方法來解決這個問題 –

相關問題