ডাব্লুপিএফ-তে কোনও ডিজাইনমোড সম্পত্তি আছে?


101

উইনফর্মগুলিতে আপনি বলতে পারেন

if ( DesignMode )
{
  // Do something that only happens on Design mode
}

ডাব্লুপিএফ-তে কি এমন কিছু আছে?


উত্তর:


152

অবশ্যই আছে :

System.ComponentModel.DesignerProperties.GetIsInDesignMode

উদাহরণ:

using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;

public class MyUserControl : UserControl
{
    public MyUserControl()
    {
        if (DesignerProperties.GetIsInDesignMode(this))
        {
            // Design-mode specific functionality
        }
    }
}

আমি আপনার অ্যাপ্লিকেশনটিতে আপনার সমাধানটি প্রয়োগ করেছি তবে এটি কার্যকর হয় না। আমি এটি এখানে স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / 3987439/… জিজ্ঞাসা করেছি । আপনি যদি চান, দয়া করে আমাদের সাথে যোগ দিন এবং আলোচনা করুন।
নাম জি ভিইউ

@ সেরিও এটি উল্লেখ করার জন্য ধন্যবাদ আপনি কি কোনও কাজের বিষয়ে সচেতন? বিটিডব্লিউ মনে হচ্ছে এটি সিলভারলাইটেও কাজ করে না: সংযুক্ত.মাইক্রোসফট
ভিজ্যুয়াল স্টুডিও / ফেডব্যাক / তারিখ / 1818১3737

ভিএস2019-এ স্যুইচ Enable project codeসক্ষম করতে হবে (বা মেনু-> ডিজাইন-> Project প্রকল্প কোড চালান)।
মার্বেল 82

47

কিছু ক্ষেত্রে আমার জানা দরকার, আমার নন-ইউআই ক্লাসে কোনও কল ডিজাইনার (যেমন আমি এক্সএএমএল থেকে ডেটা কনটেক্সট ক্লাস তৈরি করি) এর দ্বারা শুরু করা হয়েছিল কিনা whether তারপরে এই এমএসডিএন নিবন্ধটি থেকে সহায়তা সহায়ক:

// Check for design mode. 
if ((bool)(DesignerProperties.IsInDesignModeProperty.GetMetadata(typeof(DependencyObject)).DefaultValue)) 
{
    //in Design mode
}

আমি আপনার অ্যাপ্লিকেশনটিতে আপনার সমাধানটি প্রয়োগ করেছি তবে এটি কার্যকর হয় না। আমি এটি এখানে স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / 3987439/… জিজ্ঞাসা করেছি । আপনি যদি চান, দয়া করে আমাদের সাথে যোগ দিন এবং আলোচনা করুন।
নাম জি ভিইউ

20

উইনফোর্মে হোস্ট করা যে কোনও ডাব্লুপিএফ নিয়ন্ত্রণগুলির জন্য , DesignerProperties.GetIsInDesignMode(this)কাজ করে না।

সুতরাং, আমি মাইক্রোসফ্ট কানেক্টে একটি বাগ তৈরি করেছি এবং একটি কার্যপ্রণালী যুক্ত করেছি:

public static bool IsInDesignMode()
{
    if ( System.Reflection.Assembly.GetExecutingAssembly().Location.Contains( "VisualStudio" ) )
    {
        return true;
    }
    return false;
}

এর GetEntryAssembly()পরিবর্তে হওয়া উচিত নয় GetExecutingAssembly()? পরবর্তীকালে
সমাবেশটি

7

দেরী উত্তর, আমি জানি - তবে অন্য যে কেউ এটিকে DataTrigger, বা সাধারণভাবে এক্সএএমএল এর যে কোনও জায়গায় ব্যবহার করতে চায় :

xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=PresentationFramework"

<Style.Triggers>
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, 
                 Path=(componentModel:DesignerProperties.IsInDesignMode)}" 
                 Value="True">
        <Setter Property="Visibility" Value="Visible"/>
    </DataTrigger>
</Style.Triggers>

0

এটি ব্যবহার করুন:

if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)
{
    //design only code here
}

(Async এবং ফাইল অপারেশনগুলি এখানে কাজ করবে না)

এছাড়াও, এক্সএএমএল-তে একটি ডিজাইন-সময় অবজেক্ট ইনস্ট্যান্ট করতে (ডি বিশেষ ডিজাইনার নেমস্পেস)

<Grid d:DataContext="{d:DesignInstance Type=local:MyViewModel, IsDesignTimeCreatable=True}">
...
</Grid>

সেই শ্রেণিটি ( Windows.ApplicationModel) উইন্ডোজ রানটাইম এপিআই-এ অন্তর্ভুক্ত স্টোর অ্যাপ্লিকেশনগুলির জন্য। যদি আপনি কেবল একটি নিয়মিত উইন্ডোজ ডেস্কটপ অ্যাপ্লিকেশন নিয়ে কাজ করছেন তবে এটি কোনও আউট-অফ-বক্স ডাব্লুপিএফ সমাধান নয়।
qJake
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.