ऐसा इसलिए है क्योंकि टेस्ट 1 को कॉल करने के बाद फ़ोकस फ़ंक्शन को अन्य स्थान पर बुलाया जाता है। फ़ोकस।
AppShell.xaml.cs में, आपको निम्न कोड पा सकते हैं:
private void OnNavigatedToPage(object sender, NavigationEventArgs e)
{
// After a successful navigation set keyboard focus to the loaded page
if (e.Content is Page && e.Content != null)
{
var control = (Page)e.Content;
control.Loaded += Page_Loaded;
}
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
((Page)sender).Focus(FocusState.Programmatic);
((Page)sender).Loaded -= Page_Loaded;
this.CheckTogglePaneButtonSizeChanged();
}
उपरोक्त कोड का मतलब है जब आप एक पृष्ठ पर नेविगेट, यह पृष्ठ लोड घटना सदस्यता लें और पेज पर ध्यान देने के सेट हो जाएगा।
आपका कोड पृष्ठ में पृष्ठ लोड किए गए ईवेंट की सदस्यता लेता है। और आपका कोड AppShell में पेज_लोडेड फ़ंक्शन से पहले निष्पादित किया जाएगा। तो आपको वह नहीं मिला जो आप चाहते हैं।
तो यदि आप पेज_लोडेड फ़ंक्शन में ((Page)sender).Focus(FocusState.Programmatic);
पर टिप्पणी करते हैं। आप जो चाहते हैं उसे प्राप्त करेंगे। मुझे यकीन नहीं है कि उस रेखा का सही उद्देश्य क्या है। लेकिन सबकुछ अच्छा लगता है।
यदि आपको उस पंक्ति पर टिप्पणी करने के बाद कुछ गलत लगता है, तो हम इसे भी काम कर सकते हैं। लोड घटना के बाद लेआउट अद्यतन घटना में एक बार फोकस फ़ंक्शन को कॉल करें।
public sealed partial class BasicPage : Page
{
bool bAfterLoaded = false;
public BasicPage()
{
this.InitializeComponent();
this.Loaded += BasicPage_Loaded;
this.LayoutUpdated += BasicPage_LayoutUpdated;
}
private void BasicPage_LayoutUpdated(object sender, object e)
{
if (bAfterLoaded)
{
Test1.Focus(FocusState.Programmatic);
bAfterLoaded = !bAfterLoaded;
}
}
private void BasicPage_Loaded(object sender, RoutedEventArgs e)
{
bAfterLoaded = !bAfterLoaded;
}
}
आशा है कि यह आपकी मदद कर सके।
स्रोत
2015-11-10 19:10:05
धन्यवाद। यह BasicPage_LayoutUpdated के साथ काम करता है। – FetFrumos