WPF और प्रारंभिक फोकस


190

ऐसा लगता है कि जब एक WPF अनुप्रयोग शुरू होता है, तो कुछ भी ध्यान केंद्रित नहीं करता है।

यह वाकई अजीब है। आपके द्वारा उपयोग किया गया हर दूसरा ढांचा वही करता है जो आप अपेक्षा करते हैं: टैब क्रम में पहले नियंत्रण पर प्रारंभिक ध्यान केंद्रित करता है। लेकिन मैंने पुष्टि की है कि यह WPF है, केवल मेरा ऐप नहीं है - अगर मैं एक नई विंडो बनाता हूं, और बस इसमें एक टेक्स्टबॉक्स डालूं, और ऐप को चलाऊं, तो टेक्स्टबॉक्स पर तब तक फोकस नहीं होता जब तक कि मैं उस पर क्लिक नहीं करता या टैब दबाता हूं । छी।

मेरा वास्तविक ऐप केवल टेक्स्टबॉक्स की तुलना में अधिक जटिल है। मैं UserControls के भीतर UserControls की कई परतें हैं। उन UserControls में से एक में Focusable = "True" और KeyDown / KeyUp हैंडलर्स हैं, और मैं चाहता हूं कि जैसे ही मेरी विंडो खुले, फोकस हो। मैं अभी भी एक WPF नौसिखिया के बारे में कुछ कर रहा हूँ, और मैं बहुत किस्मत नहीं कर रहा हूँ यह कैसे करना है।

यदि मैं अपना ऐप शुरू करता हूं और टैब कुंजी दबाता हूं, तो फोकस मेरे फोकस करने योग्य नियंत्रण में चला जाता है, और यह मेरे इच्छित तरीके से काम करना शुरू कर देता है। लेकिन मैं नहीं चाहता कि मेरे उपयोगकर्ता टैब का उपयोग करें इससे पहले कि वे खिड़की का उपयोग शुरू कर सकें।

मैंने FocusManager.FocusedElement के साथ चारों ओर खेला है, लेकिन मुझे यकीन नहीं है कि इसे किस पर सेट करना है (शीर्ष-स्तरीय विंडो? माता-पिता जिसमें फ़ोकस करने योग्य नियंत्रण होता है? ध्यान देने योग्य नियंत्रण खुद?) या इसे क्या सेट करना है।

खिड़की खोलते ही शुरुआती ध्यान केंद्रित करने के लिए मुझे अपने गहन-नेस्टेड नियंत्रण को प्राप्त करने के लिए क्या करने की आवश्यकता है? या बेहतर अभी तक, टैब क्रम में पहला ध्यान देने योग्य नियंत्रण केंद्रित करने के लिए?

जवाबों:


164

यह भी काम करता है:

<Window FocusManager.FocusedElement="{Binding ElementName=SomeElement}">

   <DataGrid x:Name="SomeElement">
     ...
   </DataGrid>
</Window>

4
मुझे आश्चर्य है कि मैं पहला व्यक्ति हूं जिसने इस पर टिप्पणी की। मैं उलझन में था कि यह कहाँ गया क्योंकि यह लगभग किसी भी नियंत्रण पर जा सकता है। इस विशिष्ट प्रश्न के उत्तर में, मुझे लगता है कि यह विंडो पर जाएगा, लेकिन आप msdn.microsoft.com/en-us/library/… पर टिप्पणियों को पढ़ सकते हैं यह समझने के लिए कि आप इसे मामलों से कैसे नियंत्रित करते हैं।
जोएल मैकबेथ

मैंने सफलता के साथ स्टैकपैनल पर इस दृष्टिकोण का उपयोग किया है। यदि कोई दिलचस्पी रखता है, तो stackoverflow.com/a/2872306/378115
जूलियो नोब्रे

इसने मेरे लिए स्वीकृत उत्तर की तुलना में बहुत बेहतर काम किया क्योंकि मुझे उस तत्व पर ध्यान देने की आवश्यकता है जो पहले है।
प्यूटरेडो बोरेटो

163

मेरे पास रिफ्लेक्टर के माध्यम से खुदाई करने के लिए उज्ज्वल विचार था, जहां फोकस करने योग्य संपत्ति का उपयोग किया जाता है, और इस समाधान के लिए मेरा रास्ता मिला। मुझे बस अपने विंडो के कंस्ट्रक्टर में निम्न कोड जोड़ना होगा:

Loaded += (sender, e) =>
    MoveFocus(new TraversalRequest(FocusNavigationDirection.First));

यह स्वचालित रूप से टैब क्रम में पहला नियंत्रण का चयन करेगा, इसलिए यह एक सामान्य समाधान है जिसे किसी भी विंडो और जस्ट वर्क में गिरा दिया जाना चाहिए।


21
जोड़ें कि एक व्यवहार में बदल जाते हैं। <विंडो फ़ोकशविवर.फोकसफर्स्ट = "सच"> ... </ विंडो>
वीकेम्पफ

6
@wekempf, मैं व्यवहार के विचार से परिचित नहीं था, लेकिन मैंने इस पर ध्यान दिया और यह बिल्कुल भी बुरा विचार नहीं है। यदि कोई भी (मेरे जैसा) पहले से ही संलग्न व्यवहारों से परिचित नहीं है, तो यहां एक स्पष्टीकरण है: codeproject.com/KB/WPF/AttachedBehaviors.aspx
जो व्हाइट

1
इसके अतिरिक्त, यह काम करता है अगर वांछित तत्व एक UserControl है जिसमें वास्तविक ध्यान देने योग्य तत्व (यहां तक ​​कि गहरी पदानुक्रम में) है। महान!
डैनियल एल्बसचैट

1
महान विचार है, लेकिन कभी-कभी यह काम नहीं करता है अगर नियंत्रण जो फोकस को स्वीकार करेगा वह एक है Button। इसे ठीक करने के लिए, मैंने MoveFocusडिस्पैचर पर कॉल को ContextIdleप्राथमिकता पर फ्लिप किया ( Backgroundया उच्चतर काम नहीं करता है)। इसके अलावा, एक FocusNavigationDirection.Firstऐसा इरादा है जो इरादे को बेहतर बनाता है और इस मामले में वही काम करता है।
एंटोन टायखी

यह डिफ़ॉल्ट व्यवहार होना चाहिए! Yuck (मूल पोस्ट में) सही है!
एनएच।

61

संलग्न व्यवहार के रूप में कार्यान्वित स्वीकृत उत्तर के आधार पर :

using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace UI.Behaviors
{
    public static class FocusBehavior
    {
        public static readonly DependencyProperty FocusFirstProperty =
            DependencyProperty.RegisterAttached(
                "FocusFirst",
                typeof(bool),
                typeof(FocusBehavior),
                new PropertyMetadata(false, OnFocusFirstPropertyChanged));

        public static bool GetFocusFirst(Control control)
        {
            return (bool)control.GetValue(FocusFirstProperty);
        }

        public static void SetFocusFirst (Control control, bool value)
        {
            control.SetValue(FocusFirstProperty, value);
        }

        static void OnFocusFirstPropertyChanged(
            DependencyObject obj, DependencyPropertyChangedEventArgs args)
        {
            Control control = obj as Control;
            if (control == null || !(args.NewValue is bool))
            {
                return;
            }

            if ((bool)args.NewValue)
            {
                control.Loaded += (sender, e) =>
                    control.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }
    }
}

इसे इस तरह उपयोग करें:

<Window xmlns:Behaviors="clr-namespace:UI.Behaviors"
        Behaviors:FocusBehavior.FocusFirst="true">

6
मेरी राय में, यह अब तक का सबसे अच्छा समाधान है जो मैंने पाया है। धन्यवाद!
श्योन

1
कॉल करने के लिए इस उत्तर में कोड में एक बग है DependencyProperty.RegisterAttached। तीसरा पैरामीटर होना चाहिए typeof(FocusBehavior), नहीं typeof(Control)। इस बदलाव को करने से डिजाइनर को 'कंट्रोल' त्रुटियों से पहले से पंजीकृत 'फोकसफर्स्ट' संपत्ति की रिपोर्टिंग करने से रोका जा सकेगा।
टोनी विटाबिले

@TonyVitabile फिक्स्ड। यदि आप कर सकते हैं तो आप हमेशा उत्तर संपादित करने और सुधार करने के लिए स्वतंत्र हैं। :)
मिज़िपज़ोर

नियंत्रण नहीं होना चाहिए। लोड किए गए ईवेंट हैंडलर को अनलोड के दौरान डीरगिस्टर किया जाना चाहिए?
andreapier

@andreapier यदि आप परवाह करते, तो आप कर सकते थे, लेकिन डेरेगिस्टर को छोड़ देने से मेमोरी लीक या कुछ भी नहीं होगा। आपको केवल स्मृति रिसाव के कारण होने वाली घटनाओं के बारे में चिंता करने की आवश्यकता है यदि एक अल्पकालिक वस्तु एक विधि है जो एक लंबे समय तक रहने वाली वस्तु पर एक घटना से जुड़ी हुई है। इस मामले में, जीवनकाल खिड़की का है, इसलिए आप ठीक हैं।
जो सफेद

14

मुझे एक और संभव समाधान मिला। मार्क स्मिथ ने FocusManager.FocusedElement के साथ उपयोग के लिए FirstFocusedElement मार्कअप एक्सटेंशन पोस्ट किया ।

<UserControl x:Class="FocusTest.Page2"
    xmlns:FocusTest="clr-namespace:FocusTest"
    FocusManager.FocusedElement="{FocusTest:FirstFocusedElement}">

पूरी तरह से चालाक! धन्यवाद!
एंडी

8

'WPF इनिशियल फोकस नाइटमेयर' होने के बाद और स्टैक पर कुछ उत्तरों के आधार पर, निम्नलिखित मेरे लिए सबसे अच्छा समाधान साबित हुए।

सबसे पहले, अपने App.xaml OnStartup () का पालन करें:

EventManager.RegisterClassHandler(typeof(Window), Window.LoadedEvent,
          new RoutedEventHandler(WindowLoaded));

इसके बाद App.xaml में 'WindowLoaded' ईवेंट जोड़ें:

void WindowLoaded(object sender, RoutedEventArgs e)
    {
        var window = e.Source as Window;
        System.Threading.Thread.Sleep(100);
        window.Dispatcher.Invoke(
        new Action(() =>
        {
            window.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));

        }));
    }

थ्रेडिंग समस्या का उपयोग WPF प्रारंभिक फोकस के रूप में किया जाना चाहिए क्योंकि कुछ फ्रेमवर्क रेस स्थितियों के कारण यह विफल हो जाता है।

मुझे निम्न समाधान सबसे अच्छा लगा क्योंकि यह पूरे ऐप के लिए विश्व स्तर पर उपयोग किया जाता है।

आशा करता हूँ की ये काम करेगा...

ओरान


5
BeginInvokeउस डरावने Sleep(100)बयान के बजाय प्रयोग करें ।
l33t

8

उसी समस्या को सरल समाधान के साथ हल किया गया था: मुख्य विंडो में:

  <Window ....
        FocusManager.FocusedElement="{Binding ElementName=usercontrolelementname}"
         ... />

उपयोगकर्ता नियंत्रण में:

private void UserControl_GotFocus_1(object sender, RoutedEventArgs e)
        {
            targetcontrol.Focus();
            this.GotFocus -= UserControl_GotFocus_1;  // to set focus only once
        }

3
केवल तभी काम करता है जब नियंत्रण सीधे विंडो के अंदर होता है, न कि अगर यह किसी UserControl के अंदर नेस्टेड है।
जो व्हाइट

8

आप आसानी से XAML में केंद्रित तत्व के रूप में नियंत्रण सेट कर सकते हैं।

<Window>
   <DataGrid FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}">
     ...
   </DataGrid>
</Window>

मैंने इसे किसी उपयोगकर्ता-केंद्र में स्थापित करने की कोशिश नहीं की है और यह देखते हुए कि यह काम करता है, लेकिन यह हो सकता है।


यह दिलचस्प लगता है, क्योंकि आपके पास फ़ोकस समस्या के लिए नियंत्रण का नाम नहीं है। दूसरी ओर, उपयोगकर्ता नियंत्रण के साथ मेरा परीक्षण काम नहीं किया।
हिरंजर

इससे मुझे आश्चर्य नहीं होता @heringer ... जो एक <सीमा> या इसी तरह के गैर-संवादात्मक नियंत्रण पर ध्यान केंद्रित करने की कोशिश करने जैसा होगा। आप इस फ़ोकसडेलमेंट फ़ीचर को यूज़रकंट्रोल के अंदर एक इंटरैक्टिव कंट्रोल पर लगाने की कोशिश कर सकते हैं। लेकिन यह एक विकल्प नहीं हो सकता है।
साइमन गिल्बी

मैंने एक स्टैडपैनल पर इस एप्रोच का इस्तेमाल किया है कि कौन सा चाइल्ड बटन सेट होने के बाद मैं फोकस करना चाहता हूं। बहुत बहुत धन्यवाद
जूलियो नोब्रे

सावधान रहें, यह बाइंडिंग पूरी तरह से टूट सकता है। stackoverflow.com/questions/30676863/…
Der_Meister 11

2

C # 6+ के लिए मिज़िपोर के उत्तर का एक न्यूनतम संस्करण ।

public static class FocusBehavior
{
    public static readonly DependencyProperty GiveInitialFocusProperty =
        DependencyProperty.RegisterAttached(
            "GiveInitialFocus",
            typeof(bool),
            typeof(FocusBehavior),
            new PropertyMetadata(false, OnFocusFirstPropertyChanged));

    public static bool GetGiveInitialFocus(Control control) => (bool)control.GetValue(GiveInitialFocusProperty);
    public static void SetGiveInitialFocus(Control control, bool value) => control.SetValue(GiveInitialFocusProperty, value);

    private static void OnFocusFirstPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
    {
        var control = obj as Control;

        if (control == null || !(args.NewValue is bool))
            return;

        if ((bool)args.NewValue)
            control.Loaded += OnControlLoaded;
        else
            control.Loaded -= OnControlLoaded;
    }

    private static void OnControlLoaded(object sender, RoutedEventArgs e) => ((Control)sender).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}

अपने XAML में उपयोग करें:

<Window local:FocusBehavior.GiveInitialFocus="True" />

1

यदि आप मेरे जैसे हैं, और आप कुछ रूपरेखाओं का उपयोग कर रहे हैं, जो किसी तरह, मूल फोकस व्यवहार के साथ खिलवाड़ करते हैं, और अप्रासंगिक से ऊपर सभी समाधान करते हैं, तो आप अभी भी ऐसा कर सकते हैं:

1 - ध्यान देने वाले तत्व पर ध्यान दें (जो भी हो!)

2 - इसे xxx.xaml.cs के पीछे अपने कोड में जोड़ें

private bool _firstLoad;

3 - इसे उस तत्व पर जोड़ें जो पहला ध्यान केंद्रित करता है:

GotFocus="Element_GotFocus"

4 - पीछे कोड में Element_GotFocus विधि जोड़ें, और पहले ध्यान देने की आवश्यकता वाले WPF नाम तत्व को निर्दिष्ट करें:

private void Element_GotFocus(object sender, RoutedEventArgs e)
{
    if(_firstLoad)
    {
        this.MyElementWithFistFocus.Focus();
        _firstLoad = false;
    }
}

5 - लोड की गई घटना को प्रबंधित करें

XAML में

Loaded="MyWindow_Loaded"   

xaml.cs में

private void MyWindow_Loaded(object sender, RoutedEventArgs e)
{
        _firstLoad = true;
        this.Element_GotFocus(null, null);
}

आशा है कि यह अंतिम उपाय के रूप में मदद करेगा


0

मैंने भी उसी समस्या का सामना किया। मेरे पास कैनवस कंटेनर के अंदर तीन टेक्स्ट बॉक्स थे और चाहते थे कि पहला टेक्स्ट बॉक्स उपयोगकर्ता नियंत्रण खुलने पर केंद्रित हो। WPF कोड MVVM पैटर्न का अनुसरण करता है। मैंने तत्व पर ध्यान केंद्रित करने के लिए एक अलग व्यवहार वर्ग बनाया और इसे इस तरह मेरे विचार से बाँधा।

कैनवास व्यवहार कोड

public  class CanvasLoadedBehavior : Behavior<Canvas>
{
    private Canvas _canvas;
    protected override void OnAttached()
    {
        base.OnAttached();
        _canvas = AssociatedObject as Canvas;
        if (_canvas.Name == "ReturnRefundCanvas")
        {

            _canvas.Loaded += _canvas_Loaded;
        }


    }

    void _canvas_Loaded(object sender, RoutedEventArgs e)
    {
        FocusNavigationDirection focusDirection = FocusNavigationDirection.Next;

        // MoveFocus takes a TraveralReqest as its argument.
        TraversalRequest request = new TraversalRequest(focusDirection);
        UIElement elementWithFocus = Keyboard.FocusedElement as UIElement;
        if (elementWithFocus != null)
        {
            elementWithFocus.MoveFocus(request);
        }

    }

}

देखने के लिए कोड

<Canvas  Name="ReturnRefundCanvas" Height="200" Width="1466" DataContext="{Binding RefundSearchViewModel}">
                <i:Interaction.Behaviors>
                    <b:CanvasLoadedBehavior />
                </i:Interaction.Behaviors>
                <uc:Keyboard Canvas.Left="973" Canvas.Top="111" ToolTip="Keyboard" RenderTransformOrigin="-2.795,9.787"></uc:Keyboard>
                <Label  Style="{StaticResource Devlbl}" Canvas.Left="28" Content="Return and Refund Search" Canvas.Top="10" />
                <Image Height="30" Width="28" Canvas.Top="6" Canvas.Left="5" Source="pack://application:,,,/HomaKiosk;component/images/searchF.png">
                    <Image.OpacityMask>
                        <ImageBrush ImageSource="pack://application:,,,/HomaKiosk;component/images/searchF.png"/>
                    </Image.OpacityMask>
                </Image>

                <Separator Height="4" Canvas.Left="6" Margin="0" Canvas.Top="35" Width="1007"/>

                <ContentControl Canvas.Top="45" Canvas.Left="21"
                    ContentTemplate="{StaticResource ErrorMsg}"
                    Visibility="{Binding Error, Converter={c:StringNullOrEmptyToVisibilityConverter}}" 
                    Content="{Binding Error}" Width="992"></ContentControl>

                <Label  Style="{StaticResource Devlbl}" Canvas.Left="29" Name="FirstName" Content="First Name" Canvas.Top="90" />
                <wpf:AutoCompleteTextBox  Style="{StaticResource AutoComp}" Height="32" Canvas.Left="33" ToolTip="First Name"  Canvas.Top="120" Width="205"                     Padding="10,5" TabIndex="1001"
                    VerticalAlignment="Top"

                    Watermark=""
                    IconPlacement="Left"
                    IconVisibility="Visible"
                    Delay="100"

                    Text="{Binding FirstName, Mode=TwoWay, TargetNullValue=''}" 
                    Provider="{Binding FirstNameSuggestions}">
                    <wpf:AutoCompleteTextBox.ItemTemplate>
                        <DataTemplate>
                            <Border Padding="5">
                                <StackPanel Orientation="Vertical">
                                    <TextBlock Text="{Binding}"
                   FontWeight="Bold" />
                                </StackPanel>
                            </Border>
                        </DataTemplate>
                    </wpf:AutoCompleteTextBox.ItemTemplate>
                </wpf:AutoCompleteTextBox>

                <Label Style="{StaticResource Devlbl}" Canvas.Left="250" Content="Last Name" Canvas.Top="90" />
                <wpf:AutoCompleteTextBox  Style="{StaticResource AutoComp}" Height="32" ToolTip="Last Name" Canvas.Left="250"  Canvas.Top="120" Width="205" Padding="10,5"  TabIndex="1002"
                    VerticalAlignment="Top"
                    Watermark=""
                    IconPlacement="Left"
                    IconVisibility="Visible"
                    Delay="100"
                   Text="{Binding LastName, Mode=TwoWay, TargetNullValue=''}" 
                    Provider="{Binding LastNameSuggestions}">
                    <wpf:AutoCompleteTextBox.ItemTemplate>
                        <DataTemplate>
                            <Border Padding="5">
                                <StackPanel Orientation="Vertical">
                                    <TextBlock Text="{Binding}"
                   FontWeight="Bold" />
                                </StackPanel>
                            </Border>
                        </DataTemplate>
                    </wpf:AutoCompleteTextBox.ItemTemplate>
                </wpf:AutoCompleteTextBox>

                <Label Style="{StaticResource Devlbl}" Canvas.Left="480" Content="Receipt No" Canvas.Top="90" />
                             <wpf:AutoCompleteTextBox  Style="{StaticResource AutoComp}" Height="32" ToolTip="Receipt No" Canvas.Left="480"  Canvas.Top="120" Width="205" Padding="10,5"  TabIndex="1002"
                    VerticalAlignment="Top"
                    Watermark=""
                    IconPlacement="Left"
                    IconVisibility="Visible"
                    Delay="100"
                    Text="{Binding ReceiptNo, Mode=TwoWay, TargetNullValue=''}" 
                    Provider="{Binding ReceiptIdSuggestions}">
                    <wpf:AutoCompleteTextBox.ItemTemplate>
                        <DataTemplate>
                            <Border Padding="5">
                                <StackPanel Orientation="Vertical" >
                                    <TextBlock Text="{Binding}"
                   FontWeight="Bold">

                                    </TextBlock>
                                </StackPanel>
                            </Border>
                        </DataTemplate>
                    </wpf:AutoCompleteTextBox.ItemTemplate>
                    <i:Interaction.Behaviors>
                        <b:AllowableCharactersTextBoxBehavior RegularExpression="^[0-9]+$" MaxLength="15" />
                    </i:Interaction.Behaviors>
                </wpf:AutoCompleteTextBox>
                <!--<Label Style="{StaticResource Devlbl}" Canvas.Left="710" Content="Duration" Canvas.Top="79" />-->
                <!--<ComboBox AllowDrop="True" Canvas.Left="710" ToolTip="Duration" Canvas.Top="107" Width="205" TabIndex="1004"
                    Style="{StaticResource CommonComboBox}"      
                    ItemsSource="{Binding Durations}" DisplayMemberPath="Description" SelectedValuePath="Id" SelectedValue="{Binding SelectedDate, Mode=TwoWay}">

                </ComboBox>-->

                <Button Content="Search" Style="{StaticResource MyButton}" ToolTip="Search" 
                    Canvas.Top="116" Canvas.Left="710" Cursor="Hand" 
                    Command="{Binding SearchCommand}" TabIndex="2001">
                </Button>
                <Button Content="Clear" Style="{StaticResource MyButton}"  ToolTip="Clear"
                    Canvas.Top="116" Canvas.Left="840" Cursor="Hand" 
                    Command="{Binding ClearCommand}" TabIndex="2002">
                </Button>
                <Image Height="25" Width="25" Canvas.Top="175" Canvas.Left="25" Source="pack://application:,,,/HomaKiosk;component/images/chkpending.png"/>
                <Label  Style="{StaticResource LegendLbl}" Canvas.Left="50" Content="Check Returned and Payment Pending" Canvas.Top="178" />
                <Image Height="25" Width="25" Canvas.Top="175" Canvas.Left="300" Source="pack://application:,,,/HomaKiosk;component/images/chkrepaid.png"/>
                <Label  Style="{StaticResource LegendLbl}" Canvas.Left="325" Content="Repaid" Canvas.Top="178" />
                <Image Height="25" Width="25" Canvas.Top="175" Canvas.Left="395" Source="pack://application:,,,/HomaKiosk;component/images/refund.png"/>
                <Label  Style="{StaticResource LegendLbl}" Canvas.Left="415" Content="Refunded" Canvas.Top="178" />
                 </Canvas>

0

उपरोक्त समाधान मेरे लिए उम्मीद के अनुसार काम नहीं कर रहा था, मैंने मिज़िपज़ोर द्वारा प्रस्तावित व्यवहार को थोड़ा बदल दिया है:

इस भाग से

if ((bool)args.NewValue)
        {
            control.Loaded += (sender, e) =>
                   control.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
        }

इसके लिए

if ((bool)args.NewValue)
        {
            control.Loaded += (sender, e) => control.Focus();
        }

AND मैं इस व्यवहार को विंडो या UserControl में संलग्न नहीं कर रहा हूं, लेकिन नियंत्रित करने के लिए मैं शुरू में ध्यान केंद्रित करना चाहता हूं, जैसे:

<TextBox ui:FocusBehavior.InitialFocus="True" />

ओह, विभिन्न नामकरण के लिए क्षमा करें, मैं संलग्न संपत्ति के लिए InitialFocus नाम का उपयोग कर रहा हूं।

और यह मेरे लिए काम कर रहा है, शायद यह किसी और की मदद कर सकता है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.