एक्सएएमएल में मेरे पास <Slider />
है। इसमें ValueChanged घटना है। यह घटना मूल्य में हर बदलाव के साथ आग लगती है। जब मूल्य परिवर्तन खत्म हो गया है तो मुझे पता लगाना चाहिए। लॉस्टफोकस, पॉइंटर रिलीज सही घटना नहीं है। मैं इसका कैसे पता लगा सकता हूं?एक्सएएमएल स्लाइडर पूरा होने पर मैं कैसे पता लगा सकता हूं?
उत्तर
आप एक नया वर्ग बना सकते हैं और स्लाइडर से विरासत कर सकते हैं। वहां से, आप थंब नियंत्रण & देख सकते हैं कि आप जो ईवेंट चाहते हैं उसे सुनें।
इस तरह काम करना चाहिए:
public class SliderValueChangeCompletedEventArgs : RoutedEventArgs
{
private readonly double _value;
public double Value { get { return _value; } }
public SliderValueChangeCompletedEventArgs(double value)
{
_value = value;
}
}
public delegate void SlideValueChangeCompletedEventHandler(object sender, SliderValueChangeCompletedEventArgs args);
public class ExtendedSlider : Slider
{
public event SlideValueChangeCompletedEventHandler ValueChangeCompleted;
private bool _dragging = false;
protected void OnValueChangeCompleted(double value)
{
if (ValueChangeCompleted != null)
{
ValueChangeCompleted(this, new SliderValueChangeCompletedEventArgs(value));
}
}
protected override void OnApplyTemplate()
{
base.OnApplyTemplate();
var thumb = base.GetTemplateChild("HorizontalThumb") as Thumb;
if (thumb != null)
{
thumb.DragStarted += ThumbOnDragStarted;
thumb.DragCompleted += ThumbOnDragCompleted;
}
thumb = base.GetTemplateChild("VerticalThumb") as Thumb;
if (thumb != null)
{
thumb.DragStarted += ThumbOnDragStarted;
thumb.DragCompleted += ThumbOnDragCompleted;
}
}
private void ThumbOnDragCompleted(object sender, DragCompletedEventArgs e)
{
_dragging = false;
OnValueChangeCompleted(this.Value);
}
private void ThumbOnDragStarted(object sender, DragStartedEventArgs e)
{
_dragging = true;
}
protected override void OnValueChanged(double oldValue, double newValue)
{
base.OnValueChanged(oldValue, newValue);
if (!_dragging)
{
OnValueChangeCompleted(newValue);
}
}
}
मुझे Windows8/WinRT पर Slider
का उपयोग करके एक समान समस्या थी।
मेरी समस्या निम्न थी: मैं ValueChanged
ईवेंट पर प्रतिक्रिया कर रहा था और प्रत्येक ट्रिगर के बाद एक लंबे समय तक चलने वाला ऑपरेशन (फ़ाइल में असीमित रूप से लिखना) कर रहा था। और इस तरह एक समवर्ती संपादन अपवाद में चल रहा है। इससे बचने के लिए, मैंने DispatcherTimer
का उपयोग किया।
//Class member
private DispatcherTimer myDispatcherTimer = null;
private void OnSliderValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
//I update my UI right away
...
//If the dispatcher is already created, stop it
if (myDispatcherTimer!= null)
myDispatcherTimer.Stop();
//Overwrite the DispatcherTimer and thus reset the countdown
myDispatcherTimer= new DispatcherTimer();
myDispatcherTimer.Tick += (sender, o) => DoSomethingAsync();
myDispatcherTimer.Interval = new TimeSpan(0,0,2);
myDispatcherTimer.Start();
}
private async void DoSomethingAsync()
{
await DoThatLongSaveOperation();
}
आप सीधे क्या अंतिम मूल्य है पता नहीं लगा सकते, लेकिन आप कम से कम आपरेशन में देरी कर सकते जब तक वहाँ दो अद्यतन के बीच एक लंबे विराम है (उदाहरण के लिए मेरे मामले में, उपयोगकर्ता स्लाइडर खींच लेता है और यदि बनाए रखते हुए बंद हो जाता है 2 सेकंड के लिए खींचें, बचाओ ऑपरेशन वैसे भी निकाल दिया जाएगा)।
एएके! एक टाइमर 2 सेकेंड? क्यों नहीं 1. 1 सेकंड, क्यों नहीं 3? मुझे लगता है कि मैं स्पष्ट घटनाओं को पसंद करूंगा। क्या होगा यदि उनकी प्रणाली धीमी है? क्या होगा यदि उनकी प्रणाली तेज है? आप जानते हैं कि मेरा क्या मतलब है। –
आप बूल मानों की जोड़ी का उपयोग कर सकते हैं ValueChanged और (यदि संभव है तो सूचक के हेरफेर के बिना संभव परिवर्तन मूल्य) दबाया गया है;
private void Slider_ValueChanged(object s, RangeBaseValueChangedEventArgs e) {
if (!isPressed) {
AcceptChanges();
} else {
isValueChanged = true;
}
}
प्रारंभ कोड:
Window.Current.CoreWindow.PointerPressed += (e, a) => { isPressed = true; };
Window.Current.CoreWindow.PointerReleased += (e, a) => {
isPressed = false;
if (isValueChanged) AcceptChanges();
};
सुनिश्चित नहीं है कि यह कीबोर्ड का समर्थन करेगा। –
XAML, WinRT, windows8.1 और UWP:
PointerCaptureLost घटना/माउस के लिए काम करना चाहिए के लिए स्पर्श
KeyUp घटना कीबोर्ड
- 1. डिस्पैचर। डिसेबल प्रोसेसिंग सक्रिय होने पर मैं कैसे पता लगा सकता हूं?
- 2. विंडोज 7/Vista में .NET Framework सुविधा "बंद" होने पर मैं कैसे पता लगा सकता हूं?
- 3. ड्राइव में फ्लॉपी होने पर मैं कैसे पता लगा सकता हूं?
- 4. जावास्क्रिप्ट के साथ क्विकटाइम स्थापित होने पर मैं कैसे पता लगा सकता हूं?
- 5. मैं एक jquery ट्रिगर घटनाओं को पूरा करने का पता कैसे लगा सकता हूं?
- 6. मैं कैसे पता लगा सकता हूं कि मेरा पृष्ठ पोस्टबैक
- 7. मैं फ़ाइल के एन्कोडिंग का पता कैसे लगा सकता हूं?
- 8. मैं कैसे पता लगा सकता हूं कि जेनकिंस
- 9. आईफोन - मैं आईफोन संस्करण का पता कैसे लगा सकता हूं?
- 10. मैं सेवा विज्ञापन आयामों का पता कैसे लगा सकता हूं
- 11. मैं सी में पैलिंड्रोम का पता कैसे लगा सकता हूं?
- 12. मैं कैसे पता लगा सकता हूं कि वीबी.Net DataRow
- 13. छवियों में मैं कैसे पता लगा सकता हूं (और सही)?
- 14. डब्ल्यूसीएफ: मैं संदेश निकायों का पता कैसे लगा सकता हूं?
- 15. एंड्रॉइड 2.2 - मैं कैसे पता लगा सकता हूं कि मैं एसडीकार्ड पर स्थापित हूं या नहीं?
- 16. जब मैं एकता चलाने वाली प्रणाली पर हूं तो मैं कैसे पता लगा सकता हूं?
- 17. मैं cocos2d में स्पर्श का पता कैसे लगा सकता हूं?
- 18. मैं गैर-पश्चिमी पात्रों का पता कैसे लगा सकता हूं?
- 19. एनएसआईएस - मैं चुप इंस्टॉल का पता कैसे लगा सकता हूं?
- 20. मैं सी ++ स्ट्रिंग में "_" का पता कैसे लगा सकता हूं?
- 21. मैं rel = "noreferrer" समर्थन का पता कैसे लगा सकता हूं?
- 22. एकाधिक संक्रमण होने पर मैं 'विशिष्ट' तत्व पर एक सीएसएस संक्रमण के अंत का पता कैसे लगा सकता हूं?
- 23. डब्ल्यूपीएफ/एक्सएएमएल: मैं बिना किसी सीमा वाले खिड़की का आकार कैसे लगा सकता हूं?
- 24. मैं jQuery का उपयोग करके 'किसी भी' AJAX अनुरोध को पूरा करने का पता कैसे लगा सकता हूं?
- 25. मैं std :: मानचित्र पर लूप में अंतिम पुनरावृत्ति का पता कैसे लगा सकता हूं?
- 26. UILongPressGestureRecognizer पर मैं कैसे पता लगा सकता हूं कि कौन सा ऑब्जेक्ट ईवेंट उत्पन्न करता है?
- 27. मैं mousedown पर एक राइटमाउस बटन घटना का पता कैसे लगा सकता हूं?
- 28. मैं किसी वेबसाइट पर माउस के अस्तित्व का पता कैसे लगा सकता हूं?
- 29. जब मैं विजुअल स्टूडियो थीम रंग बदलता हूं तो मैं कैसे पता लगा सकता हूं?
- 30. मैं System.Web.HttpPostedFileBase से System.Web.HttpPostedFile पर कैसे लगा सकता हूं?
शायद ValueChanged से जुड़ा एक टाइमर? –
ऐसा लगता है कि आप किस घटना के साथ संघर्ष कर रहे हैं यह परिभाषित कर रहा है कि वास्तव में आप इस घटना को कब प्राप्त करना चाहते हैं। मुझे लगता है कि अगर आप इसे समझते हैं तो आप शायद यह पता लगाएंगे कि इसे कैसे भेजा जाए। शायद असतत मूल्य विकल्पों वाला एक स्लाइडर इसे और स्पष्ट कर देगा? – mydogisbox
क्या आपने कभी इस समस्या को ठीक किया है? – Carlo