উইন্ডোতে ডিজাইনের সময় সেট করা ডেটা কনটেক্সট একটি সংকলক ত্রুটি দিচ্ছে?


203

আমার ডাব্লুপিএফ অ্যাপ্লিকেশনটির মূল উইন্ডোটির জন্য আমার নীচের এক্সএএমএল রয়েছে, আমি d:DataContextনীচের নকশার সময়টি সেট করার চেষ্টা করছি , যা আমি আমার বিভিন্ন ব্যবহারকারী কন্ট্রোলগুলির জন্য সফলভাবে করতে পারি, তবে যখন আমি এটি করার চেষ্টা করি তখন এটি আমাকে এই ত্রুটি দেয় জানলা...

Error 1 The property 'DataContext' must be in the default namespace or in the element namespace 'http://schemas.microsoft.com/winfx/2006/xaml/presentation'. Line 8 Position 9. C:\dev\bplus\PMT\src\UI\MainWindow.xaml 8 9 UI

<Window x:Class="BenchmarkPlus.PMT.UI.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:UI="clr-namespace:BenchmarkPlus.PMT.UI"
    xmlns:Controls="clr-namespace:BenchmarkPlus.PMT.UI.Controls"
    d:DataContext="{d:DesignInstance Type=UI:MainViewModel, IsDesignTimeCreatable=True}"
    Title="MainWindow" Height="1000" Width="1600" Background="#FF7A7C82">

    <Grid>
        <!-- Content Here -->
    </grid>

</Window>

উত্তর:


263

আমার mc:Ignorable="d"উইন্ডো ট্যাগটিতে অ্যাট্রিবিউট যুক্ত করা দরকার । মূলত আমি নতুন কিছু শিখেছি। d:নামস্থান উপসর্গ স্বীকার করে যে মত প্রকাশের মিশ্রণের / ভিসুয়াল স্টুডিও ডিজাইনার আসলে হয় উপেক্ষিত / "আউট মন্তব্য" বাস্তব কম্পাইলার / xaml পার্সার কসম!

<Window 
...
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
...
/>

নিম্নলিখিত থেকে নেওয়া হয়েছিল

নাথান, অ্যাডাম (2010-06-04)। ডাব্লুপিএফ 4 মুক্ত করা (কিন্ডল লোকেশন 1799-1811)। Sams। কিন্ডলে সংস্করণ.

মার্কআপ সামঞ্জস্য

মার্কআপ সামঞ্জস্যতা এক্সএমএল নেমস্পেসে ( http://schemas.openxMLformats.org/markup-compatibility/2006 , সাধারণত একটি mcউপসর্গ সহ ব্যবহৃত ) একটি XMLL প্রসেসরকে নির্দিষ্ট নামস্থানগুলিতে সমস্ত উপাদান / বৈশিষ্ট্য উপেক্ষা করতে নির্দেশ দেয় যদি তারা না করতে পারে তাদের। নেট প্রকার / সদস্যদের কাছে সমাধান করা হবে। (নেমস্পেসে একটি প্রসেস কনটেন্ট বৈশিষ্ট্যও রয়েছে যা উপেক্ষা করা নেমস্পেসের ভিতরে নির্দিষ্ট ধরণের জন্য উপেক্ষা করে over

এক্সএমএল কনটেন্টে ডিজাইন-সময় বৈশিষ্ট্য যুক্ত করার মতো কাজগুলি করার জন্য এক্সপ্রেশন ব্লেন্ড এই বৈশিষ্ট্যটির সুযোগ নেয় যা রানটাইম এ উপেক্ষা করা যায়।

mc:Ignorableনাম স্থানগুলির একটি স্থান-সীমান্ত তালিকা দেওয়া যেতে পারে, এবং এমসি: প্রক্রিয়া কনটেন্টকে উপাদানগুলির একটি স্থান-বিস্মৃত তালিকা দেওয়া যেতে পারে। যখন এক্সামএক্সএলএমএলআরএডার এর সমাধান করা যায় না এমন ঘৃণ্য বিষয়বস্তুর মুখোমুখি হয়, তখন এটি এর জন্য কোনও নোডের প্রতিবেদন করে না। যদি অজ্ঞানসই বিষয়গুলি সমাধান করা যায় তবে এটি স্বাভাবিকভাবে রিপোর্ট করা হবে। তাই ভোক্তাদের মার্কআপ সামঞ্জস্য সঠিকভাবে পরিচালনা করতে বিশেষ কিছু করার দরকার নেই।


12
এর বিরুদ্ধে আমি বেশ কয়েকদিন ধরে আমার মাথা মারছি। বোধগম্য করে তবে একটি বিশাল পর্যবেক্ষণের মতো মনে হয় (ডিজাইনের সময়কালের ডেটা অবজেক্টগুলি এই সমস্ত হ্যাক ছাড়াই সমর্থন করা উচিত)
বেসিক

3
আপনি যদি তার নিজস্ব নোডের পরিবর্তে কোনও অ্যাট্রিবিউট ব্যবহার হিসাবে অজানা ডেটা প্রসঙ্গে চান তবে <ডি: উইন্ডো.ডাটা কনটেক্সট />
শেডন

দুর্দান্ত টিপ, আমাকে একটি অদ্ভুত সংকলক ব্যতিক্রম সহ চেষ্টা করতে সাহায্য করেছে। এমসি ছাড়াই: উপেক্ষাযোগ্য, এমনকি আমি ডি সেট করি: ডেটা কনটেক্সট, এক্সএএমএল সংকলক এটি ডেটা কনটেক্সট সেট করার চেষ্টা হিসাবে ব্যাখ্যা করেছে এবং ভুল এক্সএমএলএন নেমস্পেস ব্যবহার করার বিষয়ে অভিযোগ করেছে।
টোর আওরস্তাদ

19

বাহ, কী কষ্ট! আশা করি এমএস x: বাইন্ডের জন্য কিছু ভিএস ডিজাইন-সময় সমর্থন রাখে।

আমরা ভিএস ডিজাইনার ব্যবহার করতে সক্ষম হতে তবে সহজেই বাইন্ডিংয়ের পরিবর্তে এক্স: বাইন্ডে স্যুইচ করতে সক্ষম হব। আমি যা করেছি তা এখানে:

  • আমার ভিউতে, আমি আমার ভিউমডেলটি পেতে একটি সম্পত্তি যুক্ত করেছি। এটি অর্থবোধ করে কারণ x: বাইন্ড পাথগুলি পৃষ্ঠার সাথে সম্পর্কিত (অর্থাত্ ভিউ অবজেক্ট)।

  • আমার পৃষ্ঠা এক্সএএমএল-এ, আমি এক্সএএমএল <Page ... >এর শীর্ষে নীচের অংশে যুক্ত করেছি:

    mc:Ignorable="d" 
    d:DataContext="{d:DesignInstance Type=local:MyView, IsDesignTimeCreatable=False}" 
    DataContext="{x:Bind}"
    

এইভাবে, পৃষ্ঠার প্রকৃত ডেটা প্রসঙ্গটি পৃষ্ঠাতে নিজেই সেট হয়ে গেছে {x:Bind}। এটি কারণ x:Bindপৃষ্ঠার সাথে সম্পর্কিত এবং কোনও পথ দেওয়া হয়নি।

একই সময়ে, d:DataContextলাইনের কারণে , ভিএস ডিজাইনার মাই ভিউ ক্লাসে প্রতিবিম্বিত করে (উদাহরণ তৈরি না করে) ভিএস ডিজাইনার ইন্টারঅ্যাকশনটির উদ্দেশ্যে। এটি মাইভিউ থেকে ভিএস ডিজাইন করতে দেয় যেখানে আপনি তারপরে ভিউমোডেল সম্পত্তিটিতে স্ক্রোল করতে পারেন, এটি প্রসারিত করতে পারেন এবং যে আইটেমটি আপনি আবদ্ধ করতে চান সেটি নির্বাচন করতে পারেন।

আপনি যখন এটি সমস্ত করেন, ভিএস ডিজাইনার একটি বাধ্যতামূলক বিবৃতি তৈরি করবেন যার পথটি দেখার সাথে সম্পর্কিত, অর্থাত্ এটি x: বিন্দু প্রত্যাশা করে এমন পথের মতোই হবে। সুতরাং, আপনি যদি x: এ বাঁধতে চান তবে পরে বাঁধুন, আপনি কেবল " {Binding" দিয়ে সমস্ত " " অনুসন্ধান এবং প্রতিস্থাপন করতে পারেন {x:Bind

আমাদের এমনকি d:DataContextভিএসকে কোন শ্রেণীর দিকে নজর দেওয়া উচিত তা বলার জন্য লাইনটি কেন দরকার ? ভাল প্রশ্ন, যেহেতু আপনি ভাবেন যে ভিএস খুব পরের লাইনটি ব্যবহার করে পৃষ্ঠায় ডেটা কনটেক্সট সেট করে DataContext={x:Bind}। এগিয়ে যান এবং এটি ব্যবহার করে দেখুন, এটি কার্যকর হয় না এবং আপনি x পরিবর্তন করলে এটিও কাজ করে না: বাইন্ডের সাথে বাঁধার সাথে সম্পর্কিত relative

আশা করি এমএস দ্বারা এই পরিস্থিতি পরিষ্কার হয়ে যাবে !!


3
ডাব্লুপিএফ এক্স সমর্থন করে না: বাইন্ড; এই উত্তরটি ওপিতে কাজ করবে না।
বায়ারেল মিশেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.