मैं सीखने की कोशिश कर रहा हूं कि डब्ल्यूपीएफ बाइंडिंग और एमवीवीएम आर्किटेक्चर का उपयोग कैसे करें। मैं निर्भरता गुणों के साथ कुछ परेशानी में भाग रहा हूँ। मैंने डेटाकॉन्टेक्स्ट में निर्भरता प्रॉपर्टी को बाध्य करके दृश्य पर किसी आइटम की दृश्यता को नियंत्रित करने का प्रयास किया है, लेकिन यह काम नहीं करता है। कोई फर्क नहीं पड़ता कि मैंने नीचे दिए गए दृश्य मॉडल के निर्माता में GridVisible
मान सेट किया है, जब मैं कोड चलाता हूं तो यह हमेशा दिखाई देता है।डब्ल्यूपीएफ डेटा बाइंडिंग आर्किटेक्चर प्रश्न
क्या कोई देख सकता है कि मैं कहां गलत हो रहा हूं?
सी # कोड (ViewModel):
public class MyViewModel : DependencyObject
{
public MyViewModel()
{
GridVisible = false;
}
public static readonly DependencyProperty GridVisibleProperty =
DependencyProperty.Register(
"GridVisible",
typeof(bool),
typeof(MyViewModel),
new PropertyMetadata(false,
new PropertyChangedCallback(GridVisibleChangedCallback)));
public bool GridVisible
{
get { return (bool)GetValue(GridVisibleProperty); }
set { SetValue(GridVisibleProperty, value); }
}
protected static void GridVisibleChangedCallback(
DependencyObject source,
DependencyPropertyChangedEventArgs e)
{
// Do other stuff in response to the data change.
}
}
XAML कोड (देखें):
<UserControl ... >
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
</UserControl.Resources>
<UserControl.DataContext>
<local:MyViewModel x:Name="myViewModel" />
</UserControl.DataContext>
<Grid x:Name="_myGrid"
Visibility="{Binding Path=GridVisible,
ElementName=myViewModel,
Converter={StaticResource BoolToVisConverter}}">
<!-- Other elements in here -->
</Grid>
</UserControl>
मैं कई ट्यूटोरियल देखा है ऑनलाइन, और ऐसा लगता है जैसे मैं कर रहा हूँ जो मैंने पाया है उसका सही ढंग से अनुसरण करें। कोई विचार? धन्यवाद!
दरअसल मैंने आपके कोड को कॉपी किया और पाया कि यह एलिमेंटनाम के साथ और बिना बाध्यकारी के साथ काम करता है। आप उपयोगकर्ता नियंत्रण का उपयोग कर रहे हैं (यानी एक विंडो या अन्य उपयोगकर्ता नियंत्रण)? शायद वहां कुछ गड़बड़ है (कोड जिसमें आपने शामिल नहीं किया था)। – thornhill
मैंने एलिमेंटनाम हटा दिया और यह अभी भी काम नहीं करता है। ऐसा लगता है कि आप सही हैं - शायद मेरे कोड के दूसरे भाग के साथ ऐसा कुछ करना है, न कि ऊपर पोस्ट किए गए स्वच्छता संस्करण। दुर्भाग्य से मैं वास्तविक कोड पोस्ट नहीं कर सकता क्योंकि यह काम के लिए है। – RobotNerd
उस स्थिति में, जब आप अपना ऐप चला रहे हों और उस विंडो को खोलें जिसमें इस उपयोगकर्ता नियंत्रण शामिल है, तो इस के समान पाठ वाले किसी भी त्रुटि के लिए VisualStudio में अपनी आउटपुट विंडो देखें "BindingExpression पथ त्रुटि: 'GridVisible' प्रॉपर्टी पर नहीं मिली 'ऑब्जेक्ट ...... " उस संदेश की सामग्री आपको इससे आगे डीबग करने में मदद कर सकती है। क्षमा करें मैं आपको और अधिक मदद नहीं कर सकता। सौभाग्य। – thornhill