मेरे पास एक WPF पृष्ठ है। पृष्ठ में कुछ सामग्री है, लेकिन पृष्ठ के मूल लेआउट का अंतिम बाल घटक एक उपयोगकर्ता नियंत्रण है जिसे मैंने बनाया है। यह इस तरह दिखता है:डब्ल्यूपीएफ: ट्रिगर संपत्ति संपत्ति के भीतर अन्य नियंत्रणों का संदर्भ कैसे लें?
<UserControl DataContext=UserControlViewModel>
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="visibilityConverter" />
</UserControl.Resources>
<Grid
Name="grid"
Visibility="{Binding IsOn, Converter={StaticResource visibilityConverter}}">
<!-- Border to dim everything behind my user control -->
<Border Background="#000000" Opacity="0.4" />
<!-- The following border is red and holds the content -->
<Border
Width="{Binding ElementName=txt, Path=ActualWidth}"
Height="{Binding ElementName=txt, Path=ActualHeight}"
Margin="{Binding ElementName=txt, Path=Margin}"
HorizontalAlignment="{Binding ElementName=txt, Path=HorizontalAlignment}"
VerticalAlignment="{Binding ElementName=txt, Path=VerticalAlignment}"
Background="Red">
<TextBlock
Name="txt"
Width="200"
Height="100"
Margin="20"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="This is my super awesome message!" />
</Border>
</Grid>
</UserControl>
डिफ़ॉल्ट रूप से, UserControlViewModel
वस्तु की IsOn
संपत्ति, false
पर सेट है अर्थात उपयोगकर्ता नियंत्रण दिखाई नहीं देता है। मैंने कुछ तर्क लागू किए हैं जो इस संपत्ति को true
में बदलते हैं और फिर उपयोगकर्ता नियंत्रण सभी अन्य घटकों के सामने प्रदर्शित होता है जो मंद हो जाते हैं। यह अच्छी तरह से काम करता है।
अब, मैं एक फीका प्रभाव एनीमेशन बनाना चाहता हूं जो उपयोगकर्ता नियंत्रण के बाद घटकों को मंद कर देगा जो दिखाई देने पर दिखाई देगा। इसके बाद, मैं अपनी लाल सीमा बनाना चाहता हूं जो सामग्री को बाईं ओर से फीका करने के लिए रखती है, इसलिए + फीड चलाना।
चलिए पहले फीका प्रभाव से शुरू करते हैं। मैं Border
को यह शैली ने लिखा है कि पृष्ठभूमि घटकों के मद्धिम क्या करना चाहिए है:
<UserControl DataContext=UserControlViewModel>
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="visibilityConverter" />
</UserControl.Resources>
<Grid
Name="grid"
Visibility="{Binding IsOn, Converter={StaticResource visibilityConverter}}">
<!-- Border to dim everything behind my user control -->
<Border Background="#000000" Opacity="0.4">
<!-- The following style is new code -->
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<Trigger Property="{Binding ElementName=grid, Visibility}" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="0.0"
To="0.4"
Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
...
लेकिन वहाँ समस्या है: मैं, ट्रिगर Property
पर बाध्यकारी सेट नहीं कर सकता क्योंकि यह एक निर्भरता संपत्ति नहीं है। grid
को Visibility
संपत्ति Visible
पर सेट करने के बाद मुझे अपने ट्रिगर को आग लगाने के लिए एक तरीका चाहिए। कृपया मदद करें और धन्यवाद!
दूसरी समस्या यह है कि मुझे नहीं पता कि लाल सीमा को आगे बढ़ाना कैसा है, इसलिए मुझे कुछ पैमाने परिवर्तनों के आसपास भी मदद की ज़रूरत है, मुझे लगता है ... एक बार फिर धन्यवाद!
यह काम करता है, महान! – Boris
यह केवल पहली बार काम करता है! क्यूं कर!? – Boris
@myermian: मुझे पूरा यकीन नहीं है कि आपका क्या मतलब है। क्या आप इसे कुछ और वाक्यों में समझा सकते हैं? धन्यवाद। – Boris