2008-12-11 17 views
5

हे हेक्स पर एक सूचीदृश्य के पृष्ठभूमि रंग को बाध्य करना। मेरे पास एक ऑब्जेक्ट है जिसमें स्ट्रिंग प्रॉपर्टी है जिसे पृष्ठभूमिकॉलर कहा जाता है। यह स्ट्रिंग एक रंग का हेक्साइडसिमल प्रतिनिधित्व है। मैं इस वस्तु को नहीं बदल सकता।डब्ल्यूपीएफ: किसी ऑब्जेक्ट की एक स्ट्रिंग प्रॉपर्टी

मैं इन ऑब्जेक्ट्स को संग्रह सूची में संग्रहित कर रहा हूं। मैं जो करना चाहता हूं वह पंक्ति में प्रदर्शित ऑब्जेक्ट की पृष्ठभूमि रंग संपत्ति पर सूचीदृश्य की पंक्ति की पृष्ठभूमि को बांधना है।

इसका सबसे अच्छा तरीका क्या है?

उत्तर

2

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

6

आप पंक्ति के लिए आइटम में ListViewItem की पृष्ठभूमि को बाध्य करने के लिए एक शैली का उपयोग करना चाहेंगे। आइटम है ListViewItem के डिफ़ॉल्ट DataContext तो यह सरल होना चाहिए:

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:sys="clr-namespace:System;assembly=mscorlib" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid.Resources> 
     <x:Array x:Key="colors" Type="{x:Type sys:String}"> 
      <sys:String>Red</sys:String> 
      <sys:String>Yellow</sys:String> 
      <sys:String>#0000FF</sys:String> 
     </x:Array> 
    </Grid.Resources> 
    <ListView ItemsSource="{StaticResource colors}"> 
     <ListView.Resources> 
      <Style TargetType="{x:Type ListViewItem}"> 
       <Setter Property="Background" Value="{Binding .}"/> 
      </Style> 
     </ListView.Resources> 
    </ListView> 
</Grid> 
इसके बजाय पूरे आइटम आप पृष्ठभूमि रंग करने के लिए बाध्य कर देंगे, लेकिन यह ऊपर के समान होना चाहिए के लिए बाध्य की

। आपको "#" उपसर्ग करने के लिए बाइंडिंग के साथ एक कनवर्टर का उपयोग करना होगा, यह अंतर्निहित ब्रश कनवर्टर को हेक्स के रूप में पार्स करने के लिए संकेत है।