2010-03-28 14 views
7

में मैं एमवीवीएम का उपयोग कर रहा हूं और छवि के स्रोत प्रॉपर्टी को मेरे व्यू मॉडेल में डाटाबेस करने की कोशिश कर रहा हूं ताकि मैं फ्लाई पर आइकन बदल सकूं। इसके लिए पालन करने के लिए सबसे अच्छा पैटर्न क्या है? मेरे पास अभी भी मेरे व्यूमोडेल को बदलने के लिए लचीलापन है, लेकिन मुझे नहीं पता कि xaml या ViewModel में कहां से प्रारंभ करना है।डब्ल्यूपीएफ डाटाबेस छवि। एमवीवीएम

स्पष्ट होने के लिए, मैं नहीं चाहता कि मेरा व्यूमोडेल विशिष्ट छवियों (जो जानने के लिए है) के बारे में जानना चाहें, केवल वह राज्य जो विभिन्न छवियों को ट्रिगर करता है। अभी के लिए मेरे पास सिर्फ दो राज्य हैं, लाल और हरे रंग की कहें। क्या मुझे एनम संपत्ति या बूल बनाना चाहिए? और फिर मैं छवि स्रोत स्विच करने के लिए डेटाबेस कैसे करूं?

उत्तर

10

आप डेटाट्रिगर का उपयोग कर सकते हैं और अपने व्यूमोडेल में किसी संपत्ति के मूल्य के आधार पर छवि (पूरी तरह से एक्सएएमएल में) बदल सकते हैं। मैं, व्यक्तिगत रूप से, एक enum का उपयोग करेंगे, क्योंकि आप कई राज्यों को चाहते हैं।

VisualStateManager रूप में अच्छी तरह इस बात के लिए काम करेंगे, लेकिन WPF वायदा या .NET 4.

आदेश में एक DataTrigger का उपयोग करने के लिए, आप की तरह कुछ कर सकते हैं की आवश्यकता होगी:

<Image> 
    <Image.Style> 
    <Style TargetType="Image"> 
     <Setter Property="Source" Value="1.png" /> 
     <Style.Triggers> 
     <DataTrigger Binding="{Binding ViewModelEnumProperty}" Value="Image2"> 
      <Setter Property="Source" Value="2.png" /> 
     </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    </Image.Style> 
</Image> 

इस का उपयोग करेगा " 1.png ", लेकिन जब आपका enum VM में" Image2 "पर सेट होता है, तो यह 2.png पर स्विच होगा। आवश्यकतानुसार अधिक डेटा ट्रिगर जोड़े जा सकते हैं।

+0

मैं नेट 4 का उपयोग कर रहा हूं 4. क्या आप संभवतः इस पर विस्तार कर सकते हैं? शायद एक उदाहरण? – BrettRobi

+0

मैं दूसरा रीड का समाधान। अपने व्यूमोडेल में एक enum और अपने दृश्य में एक डेटाट्रिगर का प्रयोग करें। http://msdn.microsoft.com/en-us/library/system.windows.datatrigger.aspx –

+0

@ ब्रेट्रोबी: वहां आप –

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