के भीतर बाध्य नहीं कर सकता मैं एक साधारण एमवीवीएम प्रोजेक्ट चला रहा हूं और पहली बाधा पर गिर गया। मैं जोश स्मिथस रिले कमांड दृष्टिकोण का उपयोग कर अपने आदेशों को बाध्य कर रहा हूं।संसाधन शब्दकोश
समस्या यह है कि जब बटन संसाधन डिक्शनरी में होता है तो बटन बाध्यकारी नहीं होता है। अगर मैं अपने मुख्य Window.xaml में कोड (बिल्कुल जैसा है) ले जाता हूं तो कोड वांछित के रूप में निष्पादित करता है।
यह मेरा MainWindow.xaml
<Window x:Class="ForJon.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:ForJon.Ui.ViewModels"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="160" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.Resources>
<ResourceDictionary Source="Resources\ResourceDictionary.xaml" />
</Grid.Resources>
<Grid.DataContext>
<vm:MainWindowViewModel />
</Grid.DataContext>
<HeaderedContentControl
Header="Options"
Style="{StaticResource LeftMenu}"
Grid.Column="0"
/>
</Grid>
</Window>
और संसाधन शब्दकोश है
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:view="clr-namespace:ForJon.Ui.Views"
xmlns:viewModel="clr-namespace:ForJon.Ui.ViewModels"
>
<Style x:Key="LeftMenu" TargetType="HeaderedContentControl">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel>
<Button Content="Add" Command="{Binding AddCommand}" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="Width" Value="160"/>
</Style>
</ResourceDictionary>
मैं केवल यह मान सकते हैं कि जब ResourceDictionary में बाध्यकारी है कि यह ViewModel नहीं मिल सकता है (हालांकि मैं डॉन मुझे नहीं पता कि मैं ऐसा क्यों सोचता हूं)। मुझे लगता है कि यह एक अतिरिक्त स्तर को बांधने की कोशिश कर रहा है ...
कोई भी तरीका, क्या कोई यह समझा सकता है कि यह संसाधन शब्दकोश के भीतर से क्यों निष्पादित नहीं कर रहा है।
यह समस्या हल करती है लेकिन निश्चित रूप से वहाँ मैं क्या किया है की तुलना में एक अधिक सुरुचिपूर्ण दृष्टिकोण होना चाहिए? क्या इसके बजाय संसाधन शब्दकोश में DataContext घोषित करना बेहतर होगा? धन्यवाद! – Dave
@ डेवरूक एक रिलेटिवसोर्स बाइंडिंग के माध्यम से डेटा कॉन्टेक्स्ट प्राप्त करना बिल्कुल बुरा नहीं है जब आप जानते हैं कि आपका क्या कर रहा है। हालांकि अगर आप मेरी व्यक्तिगत राय मांगते हैं तो मैं भी नहीं करूँगा। संसाधन शब्दकोश का अवधारणा हमारे लिए नियंत्रण का पुन: उपयोग करने के लिए है, लेकिन जब हमारे पास संसाधन शब्दकोश में बाध्यकारी है, तो आपने मूल रूप से 'स्टाइल' को एक बहुत ही विशिष्ट वीएम और व्यू से बांध दिया है जिसका अर्थ है कि आप आइटम में इसे परिभाषित करने से बेहतर हो सकते हैं सीधे। – Viv
वाह, विव, धन्यवाद। इसके लिए मुझ पर बीयर। हां, मैं देख सकता हूं कि आप यह दृष्टिकोण क्यों लेंगे, यह वास्तव में उत्कृष्ट और भारी सहायता है। – Dave