2009-09-22 21 views
21

में फोकस किए जाने पर चयनित आइटम शैली खो देता है मेरे पास क्या है?WPF ListBox

मेरे पास ListBox एक XML फ़ाइल से आइटम्स के साथ आबादी है। DynamicResourceStyle के लिए ItemContainerStyle में DynamicResource को देखते हुए।

मैं क्या करना चाहता हूं?

मैं चयनित आइटम को ListBox से बाहर फोकस करने के बाद भी हाइलाइट करना चाहता हूं।

मुझे किस समस्या का सामना करना पड़ रहा है?

जब मैं कोई आइटम चुनता हूं तो IsSelected ट्रिगर काम करता है। लेकिन, जब मैं सूची बॉक्स से बाहर फोकस करता हूं (प्रेस टैब या किसी अन्य नियंत्रण पर क्लिक करता हूं) चयनित आइटम अपनी शैली खो देता है। क्या कोई तरीका है ताकि मैं चयनित आइटम शैली को बरकरार रख सकूं?

अग्रिम धन्यवाद!

+0

आपको मेरी संपादन पूर्ववत किया? – SLaks

+0

ओह !! यह गलती से था। माफ़ कीजिये! – Vijay

+0

हाय, मुझे एक ही समस्या का सामना करना पड़ रहा है और समाधान पोस्ट करने की कोशिश की लेकिन मैं समस्या का समाधान नहीं कर सकता। क्या आप अपनी पोस्ट संपादित कर सकते हैं ताकि इसमें समाधान हो? धन्यवाद – jpsstavares

उत्तर

1

यदि आप केवल पृष्ठभूमि रंग सेट कर रहे हैं, तो this answer के अनुसार, सूची बॉक्स के लिए ControlBrush को प्रतिस्थापित करने का प्रयास करें।

+1

ठीक है। मुझे इसकी कोशिश करने दीजिए। धन्यवाद! – Vijay

+1

यह एक बुरा विचार है - दृश्य थीमिंग वाले उपयोगकर्ताओं के लिए, यह बहुत सी चीजों को गड़बड़ कर देगा - स्क्रॉल बार और बटन वर्तमान हाइलाइट रंग बनने के लिए बदल जाएंगे (यह डिफ़ॉल्ट रूप से नीला है - इसलिए आपका भीतरी बटन और ListView scrollbars नीली बारी, बहुत बुरा!)। – BrainSlugs83

28

कुछ मामलों में संदर्भित उत्तर समस्या का समाधान करेगा, लेकिन यह आदर्श नहीं है क्योंकि नियंत्रण अक्षम/पढ़ा जाता है और यह रंग लेने की बजाय रंग योजनाओं को ओवरराइड करता है। मेरे सुझाव ListBox टैग में निम्नलिखित जोड़ने के लिए है:

<ListBox....> 
    <ListBox.Resources> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="ListBoxItem"> 
          <Border Name="Border" Padding="2" SnapsToDevicePixels="true"> 
           <ContentPresenter /> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsSelected" Value="true"> 
            <Setter TargetName="Border" Property="Background" 
              Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
     </Style> 
    </ListBox.Resources> 
</ListBox> 

क्या यह कर देगा सूची बॉक्स आइटम पर हाइलाइट पृष्ठभूमि रंग सेट कर दिया जाता जब भी यह (चाहे नियंत्रण राज्य की) चुना गया है।

मेरा जवाब जवाब पहले से ही इन उत्तरों को दी से मदद पर आधारित है, निम्न ब्लॉग के साथ: http://blogs.vbcity.com/xtab/archive/2009/06/29/9344.aspx

+0

यह दृष्टिकोण अच्छा काम करता है। धन्यवाद! –

+0

यह स्वीकार्य उत्तर होना चाहिए। – Rich

संबंधित मुद्दे