wpf: जब कमांड द्वारा बटन अक्षम किया जाता है तो टूलटिप कैसे दिखाएं?


162

मैं एक बटन स्टेट की परवाह किए बिना टूलटिप दिखाने की कोशिश कर रहा हूं, लेकिन यह ट्रिक नहीं लगती है:

<Button Command="{Binding Path=CommandExecuteAction}" 
        ToolTip="{Binding Path=Description}" ToolTipService.ShowOnDisabled="true"
        Style="{StaticResource toolbarButton}">
   <Image Source="{Binding Path=Icon}"></Image>
</Button>

जब कमांड के कारण बटन अक्षम हो जाता है तो मैं टूलटिप कैसे दिखा सकता हूं।

ध्यान दें:

ToolTipService.ShowOnDisabled = "true" एक आकर्षण की तरह काम करता है। इसका कारण मेरे उदाहरण में काम नहीं किया गया क्योंकि बटन से जुड़ी शैली कंट्रोलटेम्पलेट को फिर से परिभाषित करती है और बटन अक्षम होने पर बटन पर हिट-टेस्टिंग को बंद कर देती है (IsHitTestVanish = false)। कंट्रोलटमप्लेट में हिट-टेस्टिंग को फिर से सक्षम करने से टूलटिप दिखाई देता है जब बटन को अक्षम किया गया था।



मैं ToolTipService.ShowOnDisabled का उपयोग कर रहा हूं, लेकिन यह काम नहीं कर रहा है।
Marius

1
बस इस प्रश्न को हटा दें। मैंने एक छोटा सा परीक्षण प्रोजेक्ट किया और टूलटाइप सर्विस। ShowOnDisabled ठीक काम करता है।
Marius

15
मुझे खुशी है कि यह प्रश्न नष्ट नहीं हुआ। यह मेरे पास मौजूद एक प्रश्न / समस्या का जल्दी और सटीक उत्तर देता है, जो सटीक कारण है कि मैं पहले स्थान पर SO पर आता हूं। लेजी (tm) मारियस होने के लिए धन्यवाद। :-)
Jere.Jones

क्षमा करें, क्या कोई ऐसा तरीका है जिसे मैं अक्षम होने पर ही दिखा सकता हूं?
अडापी

जवाबों:



26

अपने स्टार्टअप कोड को जोड़ने के लिए यह एक अच्छा तरीका है

ToolTipService.ShowOnDisabledProperty.OverrideMetadata(
    typeof(Control),
    new FrameworkPropertyMetadata(true));

क्या आप बता सकते हैं कि यह क्या करता है? यह कहते हुए कि स्टार्टअप में यह एक अच्छा तरीका है, व्याख्या नहीं करता।
चुपके रब्बी

यह सुनिश्चित करता है कि नियंत्रण से विरासत में प्राप्त किसी भी वर्ग के लिए, टूलटिप्स दिखाए जाते हैं, भले ही नियंत्रण आवृत्ति अक्षम हो
sacha barber

3
यह विडंबना है कि नियंत्रण अक्षम होने पर उपयोगकर्ताओं को टूलटिप की सबसे बड़ी आवश्यकता होती है, क्योंकि वे जानना चाहते हैं कि नियंत्रण अक्षम क्यों है। यह WPF में डिफ़ॉल्ट का एक अच्छा उदाहरण है जो समय के विशाल बहुमत को गलत करता है। तो यह इसे बदलने के लायक है।
कंटंगा

2

टूलटिप को सभी अक्षम बटन और चेकबॉक्स के लिए दृश्यमान बनाएं:

<Window.Resources>
    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}>
        <Setter Property="ToolTipService.ShowOnDisabled" Value="true"/>
    </Style>
    <Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Type CheckBox}}>
        <Setter Property="ToolTipService.ShowOnDisabled" Value="true"/>
    </Style>
</Window.Resources>

इससे पहले BasedOn=...कि आप चेकबॉक्स या बटन के लिए लागू किया गया है कि किसी भी अन्य शैलियों को ढीला रोकता है। यदि आप बटन या चेकबॉक्स के लिए किसी अन्य शैली का उपयोग नहीं करते हैं, तो आप BasedOn=..भागों को निकाल सकते हैं

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