WPF संपादन संसाधन




animation binding (2)

हाय वहाँ एक संसाधन ब्रश को कोड से या कुछ बंधन के माध्यम से बदलने का कोई तरीका है? मैं क्या करना चाहता हूं मेरे "मुख्य" ब्रश का रंग बदल जाता है जब कोई बटन क्लिक किया जाता है

आपका बहुत बहुत धन्यवाद!

संपादित करें:

इसकी एक ग्रेडियेंट ब्रश मैं उस पर रंग कैसे बदलूंगा?

myBrush.GradientStops[0].Color = Colors.Red;

बस मुझे एक अपवाद देता है ... और क्या कोई रंगीन बदलाव को चेतन करने का कोई तरीका है, जैसे कि एक कहानी बोर्ड?


परिवर्तन को एनिमेट करने के लिए, स्टोरीबोर्ड बनाने का प्रयास करें और उस पर कॉल करना प्रारंभ करें।

(मैं एक उदाहरण एक साथ फेंक दूँगा)

संपादित करें: ऐसा लगता है कि यह एक और सिल्वरलाइट है! = WPF मेरे भाग में विफल रहता है। मैं इसे डब्ल्यूपीएफ में जा रहा लगता है।


यदि आप मॉडल-व्यू-देखेंमोडेल (एमवीवीएम) पैटर्न या कुछ इसी तरह का उपयोग कर रहे हैं, तो आप ब्रश रंग (या पूरे ब्रश) को अपने व्यू मॉोडल की संपत्ति बना सकते हैं और इसे सीधे बाँध सकते हैं

मेरे (अनुभवहीन) राय में, संसाधनों को रनटाइम पर बदलना नहीं चाहिए अगर यह बदल रहा है, तो इसे बाँध लें।

(संपादित करें 2: सिल्वरलाइट-शैली के शीर्ष-स्तरीय उपयोगकर्ता नियंत्रक से बदलकर WPF विंडो में। रे बूयसन ने टिप्पणियों में लिखा है, डब्ल्यूपीएफ में एक यूजर कंट्रोल एक निर्भरता प्रॉपर्टी के माध्यम से रंग का पर्दाफाश करेगा, न कि इसे एक व्यू मॉोडल तक सीमित रखा जाएगा।)

XAML:

<Grid x:Name="LayoutRoot">
    <Grid.Background>
        <SolidColorBrush Color="{Binding BackgroundColor}" />
    </Grid.Background>
    ...

देखेंमोडेल वर्ग:

public class MyViewModel : INotifyPropertyChanged
{
    public Color BackgroundColor
    {
        get { ... }
        set { ... } // fire PropertyChanged event
    }
    ...

XAML.cs:

public partial class MyWindow : Window
{
     private MyViewModel m_viewmodel;

     public MyWindow()
     {
          InitializeComponent();
          viewmodel = new MyViewModel();
          this.LayoutRoot.DataContext = viewmodel;
     }

     private void ButtonClick(object sender, RoutedEventArgs e)
     {
         this.viewmodel.BackgroundColor = Color.Red;
     }
     ...




brush