ডাব্লুপিএফ এবং এক্সএএমএল এর লুকানো বৈশিষ্ট্য?


123

এখানে বিভিন্ন ভাষার জন্য আলোচিত বিশাল সংখ্যক গোপনীয় বৈশিষ্ট্য রয়েছে। এক্সএএমএল এবং ডাব্লুপিএফ-এর কিছু লুকানো বৈশিষ্ট্য সম্পর্কে এখন আমি কৌতূহলী?

আমি যেটি খুঁজে পেয়েছি তা হ'ল একটি লিস্টভিউয়ের শিরোনাম ক্লিক ইভেন্ট

<ListView x:Name='lv' 
      Height="150" 
      GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler">

গ্রিডভিউ কলমহিডার.ক্লিক সম্পত্তিটি তালিকাভুক্ত নয়।

এখনও সম্পর্কিত কিছু বৈশিষ্ট্য:

আরো দেখুন:

  1. সি # এর লুকানো বৈশিষ্ট্য
  2. পাইথনের লুকানো বৈশিষ্ট্য
  3. এএসপি.এনইটি এর লুকানো বৈশিষ্ট্য
  4. পার্লের লুকানো বৈশিষ্ট্য
  5. জাভা এর লুকানো বৈশিষ্ট্য
  6. VB.NET এর লুকানো বৈশিষ্ট্য
  7. পিএইচপি এর লুকানো বৈশিষ্ট্য
  8. রুবির লুকানো বৈশিষ্ট্য
  9. সি এর লুকানো বৈশিষ্ট্য
  10. এবং তাই ........

7
এমএসডিএন.মাইক্রোসফটকম /en-us/library/ … এখানে একবার দেখুন । ক্লিক ইভেন্টটি বাটনবাজ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত। আপনি যা বর্ণনা করছেন তা সংযুক্ত ইভেন্টগুলি, ডাব্লুপিএফ-এর একটি দুর্দান্ত পাওয়ারফুল ধারণা ( এমএসডিএন.মাইক্রোসফটকম /en-us/library/bb613550.aspx )। এইভাবে আপনি গ্রিডে 100 টি বোতাম এবং শুধুমাত্র 1 হ্যান্ডলার সহ <গ্রিড বোতাম.ক্লিক> করতে পারেন।
সর্স্কুট

1
প্রথমে আমি "ওহ, এখানে আমরা আবার যাই" এর মতো ছিলাম, কিন্তু তারপরে আমি প্রতিক্রিয়ার মধ্যে কিছু শিখেছি তাই আমি
এগুলি

1
সম্প্রদায় উইকি হওয়া উচিত
tsilb

2
@ স্টিলব আমার মনে হয় না এটি সম্প্রদায়ের উইকি হওয়া উচিত, এই লিঙ্কটি দেখুন মেটা.স্ট্যাকেক্সেঞ্জার.কমেসেশনস
প্রশান্ত চোলাচাগুদ্দা

উত্তর:


87

মাল্টিবাইন্ডিং ( স্ট্রিংফর্ম্যাটের সাথে মিলিত):

<TextBlock>
  <TextBlock.Text>
    <MultiBinding StringFormat="{}{0}, {1}">
      <Binding Path="LastName" />
      <Binding Path="FirstName" />
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

1
দুর্দান্ত :-) আপনি যদি 4 বা তার বেশি আগে সিলভারলাইট ব্যবহার না করেন।
ভি 5 এর

5
এটি দুর্দান্ত, তবে আমি এটি না করার জন্য প্রলুব্ধ হব। যদি আমার কোনও স্ট্রিং তৈরি করার দরকার হয় তবে আমি এটিকে যুক্তি হিসাবে শ্রেণিবদ্ধ করতাম এবং আউটপুটটি ইউনিট করতে চাই। এর মতো স্টাফ কখনও কখনও স্ট্রিং হিসাবে ভিউ মডেলে আরও ভাল হয় For ফর্ম্যাট ()।
আয়ান হোল্ডার

58

কোনও নির্দিষ্ট দৃশ্যে বাইন্ডিংয়ের মাধ্যমে কী চলছে তা ডিবাগ করার জন্য প্রেজেন্টেশনট্রেসসোর্সসও রয়েছে। আপনাকে যা করতে হবে তা হ'ল উইন্ডোজবেজ অ্যাসেমব্লিতে সিস্টেম ডায়াগনস্টিকস নেমস্পেস reference

xmlns:sd="clr-namespace:System.Diagnostics;assembly=WindowsBase"

এবং তারপরে বাঁধাইয়ের এক্সপ্রেশনটিতে নিম্নলিখিতগুলি যুক্ত করুন:

<TextBlock Text="{Binding Message, sd:PresentationTraceSources.TraceLevel=High}"  />

লগ এই মত হবে:

System.Windows.Data Warning: 52 : Created BindingExpression (hash=5923895) for Binding (hash=7588182)
System.Windows.Data Warning: 54 :   Path: 'Message'
System.Windows.Data Warning: 56 : BindingExpression (hash=5923895): Default mode resolved to OneWay
System.Windows.Data Warning: 57 : BindingExpression (hash=5923895): Default update trigger resolved to PropertyChanged
System.Windows.Data Warning: 58 : BindingExpression (hash=5923895): Attach to System.Windows.Controls.TextBlock.Text (hash=65248697)
System.Windows.Data Warning: 63 : BindingExpression (hash=5923895): Resolving source 

4
ভিজুয়ালস্টুডিও ২০১০-তে আপনাকে ট্রেস সেটিংসের স্তরটি সতর্কতার সাথে সেট করতে হবে! দেখুন stackoverflow.com/questions/2802662/...
WaltiD

44

3.5sp1 বাইন্ডিংগুলিতে টার্গেটনালভ্যালু প্রবর্তন করেছে। মানটি প্রবেশ করানো হলে এটি নুলকে আবদ্ধ সম্পত্তি সেট করবে এবং যদি আপনার সম্পত্তি নাল হয় তবে এই মানটি প্রদর্শিত হবে।

<TextBox Text="{Binding Total, TargetNullValue=$0.00}" />

44

3.5sp1 স্ট্রিংফর্ম্যাটকে বাধ্যতামূলক এক্সপ্রেশনগুলির মধ্যে প্রবর্তন করে, যেমন

<TextBox Text="{Binding Date, StringFormat='{}{0:MM/dd/yyyy}'}" />

আমি এই বৈশিষ্ট্যটি কতটা ভালবাসি তা কথায় বলতে পারি না। আমি প্রচুর পরিমাণে রূপান্তরকারী প্রচুর পরিমাণে ঘৃণা করি।
রব

হ্যাঁ, খুব সহজেই সর্বাধিক সময় সাশ্রয়ের বৈশিষ্ট্য যুক্ত করা হয়। বিশেষত যখন টার্গেটনুয়ালওয়ালের সাথে একত্রিত হয়ে প্রচুর সমস্যা চলে যায়।
ব্রায়ান অ্যান্ডারসন

6
স্ট্রিংফর্ম্যাটটির চারপাশে একক উদ্ধৃতি স্থাপন করা উচিত কিছু সংকলক সতর্কতাগুলি অপসারণ করা উচিত -Text={Binding Date, StringFormat='{}{0:MM/dd/yyyy}'}"
রায়ান ভার্সা

জেনে রাখা ভাল, আমি কেবল তাদের এড়িয়ে চলতে অভ্যস্ত হয়েছি।
ব্রায়ান অ্যান্ডারসন

1
আমি জানাতে চেষ্টা করছিলাম যে কোনও যথেচ্ছ বিন্যাসের স্ট্রিং কাজ করবে work আমি বিশ্বাস করি যে এই ক্ষেত্রে আন্তর্জাতিকীকরণ সংস্করণটি স্ট্রিংফর্ম্যাট = '{} {0: d}' হবে।
ব্রায়ান অ্যান্ডারসন

29

কখনও কখনও আপনি স্ট্রিং পাবেন যা লেবেলে প্রদর্শন করতে খুব দীর্ঘ। এই ক্ষেত্রে আমরা উপবৃত্তগুলি দেখানোর জন্য TextTrimmingসম্পত্তি ব্যবহার করতে পারিTextBlock

<TextBlock 
  Name="sampleTextBlock" 
  TextTrimming="WordEllipsis" 
  TextWrapping="NoWrap"/>

এমএসডিএন লিংক


এ জাতীয় ক্ষেত্রে একটি টুলটিপ যুক্ত করার বিষয়টি বিবেচনা করুন: tranxcoder.wordpress.com/2008/10/12/…
সারফেন

27

উইন্ডোতে অ্যারো প্রভাব যুক্ত করা হচ্ছে

  <Window.Resources>
    <ResourceDictionary Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, 
        PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />
</Window.Resources>

1
কোড যুক্ত হয়েছে তবে তবুও এরো প্রভাব যুক্ত হয় না। আমি কিছু অনুপস্থিত করছি?
এলমো

21

এক্স: টাইপআরগমেন্টস সহ এক্সএএমএল-এ জেনারিকস

আপনি যদি এক্সএএমএল-তে একটি পর্যবেক্ষণযোগ্য সংগ্রহ ব্যবহার করতে চান তবে আপনাকে এমন একটি ধরণের তৈরি করতে হবে যা পর্যবেক্ষণযোগ্য সংগ্রহ থেকে উদ্ভূত কারণ আপনি এটি এক্সএএমএলে ঘোষণা করতে পারবেন না। এক্সএএমএল ২০০৯ এর সাথে আপনি জেনেরিক ধরণের ধরণের সংজ্ঞা দিতে x: TypeArguments বৈশিষ্ট্যটি ব্যবহার করতে পারেন।

<!-- XAML 2006 -->
class EmployeeCollection : ObservableCollection<Employee>
{
}

<l:EmployeeCollection>
    <l:Employee FirstName="John" Name="Doe" />
    <l:Employee FirstName="Tim" Name="Smith" />
</lEmployeeCollection>

<!-- XAML 2009 -->
<ObservableCollection x:TypeArguments="Employee">
    <l:Employee FirstName="John" Name="Doe" />
    <l:Employee FirstName="Tim" Name="Smith" />
</ObservableCollection />

1
দুর্ভাগ্যক্রমে, এক্স: টাইপআরগমেন্টগুলি কেবল আলগা এক্সএএমএল ফাইলগুলিতে পাওয়া যায় এবং সংকলিত হয় না :(
কেভিনডাব

হ্যাঁ, আলগা xaml কেবল :( ডাব্লুপিএফ বিকাশকারীদের বেশিরভাগের জন্য XAML2009 অকেজো
গ্রেগরি

19

অক্ষম নিয়ন্ত্রণের উপর টুলটিপ প্রদর্শন করুন

ডাব্লুপিএফ এটি অক্ষম অবস্থায় থাকলে কোনও নিয়ন্ত্রণে টুলটিপ প্রদর্শন করার অনুমতি দেয়।

উদাহরণ স্বরূপ

<Button Content="Disabled Button" ToolTipService.ShowOnDisabled="True" IsEnabled="False" ToolTip="This is a disabled button"/> 

19

এক্স: আর্গুমেন্ট সহ অ-ডিফল্ট কনস্ট্রাক্টর ব্যবহার করুন

এক্সএএমএল 2006-এ অবজেক্টগুলির অবশ্যই তাদের ব্যবহারের জন্য একটি সর্বজনীন ডিফল্ট নির্মাণকারী থাকতে হবে। এক্সএএমএল ২০০৯ এ আপনি এক্স: আর্গুমেন্ট সিনট্যাক্স ব্যবহার করে কনস্ট্রাক্টর আর্গুমেন্ট পাস করতে পারেন।

<!-- XAML 2006 -->
<DateTime>00:00:00.0000100</DateTime>

<!-- XAML 2009 -->
<DateTime>
    <x:Arguments>
        <x:Int64>100</x:Int64>
    </x:Arguments>
</DateTime>

18

সত্যই কোনও গোপন বৈশিষ্ট্য নয় তবে ডাব্লুপিএফ / এক্সএএমএল এর সাথে আপনি বি স্টলনিটজ এবং জোশ স্মিথ পাবেন । ডাব্লুপিএফ / এক্সএএমএল প্রোগ্রামিংয়ের রাণী এবং কিং


3
কার্ল কি? নাবিক? নাকি জোকার?
cplotts

18

মার্কআপ এক্সটেনশান এবং সংযুক্ত বৈশিষ্ট্যগুলি আমার প্রিয় বৈশিষ্ট্য, তারা আপনাকে খুব মার্জিত উপায়ে এক্সএএমএল "শব্দভাণ্ডার" প্রসারিত করতে সক্ষম করে।

মার্কআপ এক্সটেনশনগুলি

<!-- Binding to app settings -->
<CheckBox IsChecked="{my:SettingBinding MinimizeToTray}">Close to tray</CheckBox>

<!-- Fill ItemsControl with the values of an enum -->
<ComboBox ItemsSource="{my:EnumValues sys:DaysOfWeek}"/>

<!-- Localization -->
<TextBlock Text="{my:Localize HelloWorld.Text}"/>

<!-- Switch on the result of a binding -->
<TextBlock Text="{my:Switch Path=IsGood, ValueIfTrue=Good, ValueIfFalse=Bad}"/>

সংযুক্ত বৈশিষ্ট্য

<!-- Sort GridView automatically -->
<ListView ItemsSource="{Binding Persons}"
      IsSynchronizedWithCurrentItem="True"
      util:GridViewSort.AutoSort="True">
    <ListView.View>
        <GridView>
            <GridView.Columns>
                <GridViewColumn Header="Name"
                                DisplayMemberBinding="{Binding Name}"
                                util:GridViewSort.PropertyName="Name"/>
                <GridViewColumn Header="First name"
                                DisplayMemberBinding="{Binding FirstName}"
                                util:GridViewSort.PropertyName="FirstName"/>
                <GridViewColumn Header="Date of birth"
                                DisplayMemberBinding="{Binding DateOfBirth}"
                                util:GridViewSort.PropertyName="DateOfBirth"/>
            </GridView.Columns>
        </GridView>
    </ListView.View>
</ListView>


<!-- Vista Glass effect -->
<Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:my="clr-namespace:WpfApplication1"
        Title="Window1"
        my:WinUtil.EnableAeroGlass="True">

...

গ্রিডভিউসোর্টের উত্স (বিটিডব্লিউ, এটি GridViewColumnHeader.Clickঅর্টাস দ্বারা উল্লিখিত ইভেন্টটি ব্যবহার করে )


WinUtil.EnableAeroGlassকোথাও কোথাও সোর্স পাওয়া যায়?
ওসকার

হ্যাঁ, তবে আমি এটি পোস্ট করার পরে এটি অনেকটাই পরিবর্তিত হয়েছে ... এখন 2 টি বৈশিষ্ট্য রয়েছে, এ্যাবলিবলার এবং গ্লাসফ্রেমমার্গিনস। আপনি এখানে কোডটি খুঁজে পেতে পারেন: projets.developpez.com/projects/dvp-net/repository/entry/trunk/…
টমাস

15

প্লাস সাইন ( +) ব্যবহার করে আপনি এক্সএএমএল-এ নেস্টেড প্রকারগুলি উল্লেখ করতে পারেন । উদাহরণস্বরূপ, যদি আমাদের এই শ্রেণি থাকে:

public class SomeClass
{
    public enum SomeEnum
    {
        SomeValue
    };
}

আমরা SomeValueনিম্নলিখিত সিনট্যাক্স ব্যবহার করে এক্সএএমএল- তে উল্লেখ করতে পারি :

{x:Static local:SomeClass+SomeEnum.SomeValue}

এই বাক্য গঠনটি এমএসডিএন-তে নথিভুক্ত নয় এবং এটি আনুষ্ঠানিকভাবে সমর্থিত নয়। কেউ এমএসডিএন ফোরামে এটি সম্পর্কে জিজ্ঞাসা করেছিল এবং দৃশ্যত এটি ভিএস2010 এর ডাব্লুপিএফ ডিজাইনারকে ভেঙে দেয়। এটি মাইক্রোসফ্ট কানেক্টে প্রকাশিত হয়েছে


14

গ্রিড আকার ভাগ করে নেওয়া ( এখানে একটি ভাল উদাহরণ)। দীর্ঘ গল্প সংক্ষিপ্ত আপনি গ্রিড কলাম এবং সারি ভাগ আকার হতে পারে এমনকি বিভিন্ন গ্রিড জুড়ে। এটি সেই সমস্ত লোকের জন্য অমূল্য হবে যারা স্থানে ডেটা সম্পাদনা করার প্রয়োজন ছাড়াই ডেটাগ্রিড ব্যবহার করছেন।


11

অগ্রাধিকার বাঁধাই । আপনাকে "প্রথম আসুন প্রথম শো" আদেশে অ্যাসিন বাইন্ডিংগুলি ব্যবহার করার অনুমতি দেয়:

<TextBlock.Text>
      <PriorityBinding FallbackValue="defaultvalue">
        <Binding Path="SlowestDP" IsAsync="True"/>
        <Binding Path="SlowerDP" IsAsync="True"/>
        <Binding Path="FastDP" />
      </PriorityBinding>
</TextBlock.Text>

10

এক্স: ফ্যাক্টরিমাথড সহ স্ট্যাটিক ফ্যাক্টরি পদ্ধতির ব্যবহার

আপনার কাছে এমন কোনও ধরণের থাকে যেখানে কোনও পাবলিক কনস্ট্রাক্টর না থাকলেও স্ট্যাটিক ফ্যাক্টরি পদ্ধতিতে আপনাকে XAML 2006 এ কোডটি টাইপ তৈরি করতে হয়েছিল X

<!-- XAML 2006 -->
Guid id = Guid.NewGuid();

<!-- XAML 2009 -->
<Guid x:FactoryMethod="Guid.NewGuid" />

7

উন্নত "ক্যাপশন" বৈশিষ্ট্য

অন্য একটি জিনিস যা খুব স্পষ্ট নয় তা হ'ল কিছু বৈশিষ্ট্যের বিষয়বস্তু যা আমরা ব্যবহার করি কেবলমাত্র পাঠ্য contains যদি কোনও জিইউআই উপাদানটির সম্পত্তি অবজেক্টের ধরণের হয় তবে খুব সম্ভবত আপনি কেবল পাঠ্য সেট করার পরিবর্তে আপনার প্রয়োজনের একটি প্যানেল যুক্ত করতে পারেন যাতে নিয়ন্ত্রণের সেট থাকে।

এর উদাহরণ মেনুআইটিম, যেখানে Headerসম্পত্তি (যা সাধারণত পাঠ্য ধারণ করে) প্যানেল নিয়ন্ত্রণে আবৃত গুঁই উপাদানগুলির একটি সেট থাকতে পারে (বা আপনার কেবল একটি প্রয়োজন হলে কেবল একটি গুই উপাদান)।

Iconমেনু আইটেমে সম্পত্তিটিও নোট করুন । এটিতে সাধারণত একটি চিত্র উপাদান থাকে তবে এতে কোনও কিছু থাকতে পারে!

<MenuItem Name="MyMenuItem" Click="MyMenuItem_Click">
  <MenuItem.Icon>
    <Button Click="Button1_Click">i</Button>
  </MenuItem.Icon>
  <MenuItem.Header>
     <StackPanel Orientation="Horizontal" >
        <Label>My text</Label>
        <Button Click="Button2_Click">ClickMe!</Button>
     </StackPanel>
  </MenuItem.Header>
</MenuItem>

7

এছাড়াও খুব দরকারী: GridLengthConverter, BooleanToVisibilityConverter, সমস্ত System.Windows.Controls মধ্যে AlternationConverter
Maciek Świszczowski

6

অন্তর্নির্মিত প্রকার

আপনি যদি কোনও সরল অভিধানে স্ট্রিং বা ডাবলের মতো সাধারণ ধরণের অবজেক্টগুলি যুক্ত করতে চান তবে আজ আপনাকে একটি এক্সএমএল নেমস্পেসে প্রয়োজনীয় ক্লার-নেমস্পেসগুলি ম্যাপ করতে হবে। এক্সএএমএল ২০০৯ এ আমরা এক্সএএমএল ভাষাতে অন্তর্ভুক্ত প্রচুর সরল প্রকারের।

<!-- XAML 2006 -->
<sys:String xmlns:sys="clr-namespace:System;assembly=mscorlib >Test</sys:String>

<!-- XAML 2009 -->
<x:String>Test</x:String>

নিম্নলিখিত ধরণেরগুলি এক্সএএমএল ভাষায় অন্তর্ভুক্ত করা হয়েছে:

<x:Object/> 
<x:Boolean/> 
<x:Char/> 
<x:String/> 
<x:Decimal/> 
<x:Single/> 
<x:Double/> 
<x:Int16/> 
<x:Int32/> 
<x:Int64/> 
<x:TimeSpan/> 
<x:Uri/> 
<x:Byte/> 
<x:Array/> 
<x:List/> 
<x:Dictionary/> 

এক্সএএমএল প্রসেস করার জন্য ডাব্লুপিএফ ব্যবহার করে এটি কাজ করে না। msdn.microsoft.com/en-us/library/ee792007.aspx
স্কোবি

6

Ob x: রেফারেন্স with সহ সহজ অবজেক্ট রেফারেন্স

আপনি যদি আজ একটি অবজেক্ট রেফারেন্স তৈরি করতে চান তবে আপনাকে একটি ডেটাবাইন্ডিং করতে হবে এবং এলিমেন্টনামের সাহায্যে উত্সটি ঘোষণা করতে হবে। এক্সএএমএল ২০০৯ এ আপনি নতুন {x: রেফারেন্স} মার্কআপ এক্সটেনশনটি ব্যবহার করতে পারেন

<!-- XAML 2006 -->
<Label Target="{Binding ElementName=firstName}">FirstName</Label>
<TextBox x:Name="firstName" />

<!-- XAML 2009 -->
<Label Target="{x:Reference firstName}">FirstName</Label>
<TextBox x:Name="firstName" />

এটি লক্ষণীয় যে x:Referenceএক্সএএমএল ২০০৯ ভাষার বৈশিষ্ট্য থাকাকালীন , এমন কিছু পরিস্থিতি রয়েছে যেখানে এটি সংকলিত এক্সএএমএল-তেও কাজ করবে। তবে এটি সর্বত্র কাজ করে না এবং এটি এক্সএএমএল ডিজাইনার দৃষ্টিভঙ্গি ভেঙে দিতে পারে।
মাইক স্ট্রোবল

1
@ মাইকস্ট্রোবেল: এটি সর্বত্র বেশ কার্যকরভাবে কাজ করে, ডিজাইনারদের ভাঙার বিষয়ে আমি কম যত্ন নিতে পারি না।
এইচবি

6

সিস্টেম রঙের ব্যবহার

<Border Background="{DynamicResource {x:Static SystemColors.InactiveBorderBrushKey}}"/>

3
এটি একটি ডায়নামিক রিসোর্স হিসাবে উল্লেখ করা গুরুত্বপূর্ণ কারণ আপনার অ্যাপ্লিকেশন চলাকালীন ব্যবহারকারী সিস্টেমের রঙ পরিবর্তন করতে পারে।
এম ডুডলি

3

স্বেচ্ছাসেবী অভিধান কীগুলির জন্য সমর্থন

এক্সএএমএল ২০০ 2006-এ সমস্ত সুস্পষ্ট এক্স: মূল মানটিকে স্ট্রিং হিসাবে ধরা হয়েছিল। এক্সএএমএল ২০০৯-এ আপনি এলিমেন্টসিন্ট্যাক্সে কী লিখে আপনার পছন্দ মতো কোনও ধরণের কী সংজ্ঞায়িত করতে পারেন।

<!-- XAML 2006 -->
<StreamGeometry x:Key="CheckGeometry">M 0 0 L 12 8 l 9 12 z</StreamGeometry>

<!-- XAML 2009 -->
<StreamGeometry>M 0 0 L 12 8 l 9 12 z
    <x:Key><x:Double>10.0</x:Double></x:Key>
</StreamGeometry>

2

কোড দ্বারা একটি বৈধকরণের ত্রুটি সেট করুন

বাঁধাইয়ের এক্সপ্রেশনটিতে একটি ValidatioRule কেবল তখনই ট্রিগার হয়, যখন বাঁধার টার্গেটের দিকটি পরিবর্তন হয়। আপনি কোড দ্বারা একটি বৈধতা ত্রুটি সেট করতে চান আপনি নিম্নলিখিত স্নিপেট ব্যবহার করতে পারেন।

বৈধতা ত্রুটি সেট করুন

ValidationError validationError = 
    new ValidationError(regexValidationRule, 
    textBox.GetBindingExpression(TextBox.TextProperty));

validationError.ErrorContent = "This is not a valid e-mail address";

Validation.MarkInvalid(
    textBox.GetBindingExpression(TextBox.TextProperty), 
    validationError);

বৈধতা ত্রুটি সাফ করুন

Validation.ClearInvalid(textBox.GetBindingExpression(TextBox.TextProperty));

2

টেক্সটব্লকের মধ্যে UIElement (গুলি) স্টাফ করার ক্ষমতা

আমি জানি না যে এটি কতটা দরকারী (যদিও এটি লুকিয়ে থাকা হিসাবে যোগ্যতা অর্জন করে) ... তবে এটি প্রথম নিশ্চিতভাবেই আমাকে ছুঁড়ে ফেলেছে :

<Grid x:Name="LayoutRoot">
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
        <Grid>
            <Rectangle Fill="AliceBlue" Width="25" Height="25"/>
        </Grid>
    </TextBlock>
</Grid>

আপনি নিম্নোক্ত xaml কার্যকর হতে পারে তর্ক করতে পারেন (অর্থাত্ কিছু পাঠ্যের শেষে একটি গ্রাফিক স্থাপন):

<Grid>
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Hello World">
        <TextBlock.Resources>
            <DrawingBrush x:Key="exclamationPoint" Stretch="Uniform">
                <DrawingBrush.Drawing>
                    <DrawingGroup>
                        <DrawingGroup.Children>
                            <GeometryDrawing Brush="#FF375CE2" Geometry="F1 M 7.968,58.164L 0,58.164L 1.914,49.921L 9.882,49.921L 7.968,58.164 Z M 21.796,0L 11.054,42.148L 4.403,42.148L 13.049,0L 21.796,0 Z "/>
                        </DrawingGroup.Children>
                    </DrawingGroup>
                </DrawingBrush.Drawing>
            </DrawingBrush>
        </TextBlock.Resources>
        <Grid>
            <Rectangle Width="100" Height="100" Fill="{StaticResource exclamationPoint}"/>
        </Grid>
    </TextBlock>
</Grid>

উপরের এক্সএএমএল নীচের মতো রেন্ডার করে:

ওহে বিশ্ব


1

ডিবাগিং অ্যানিমেশনগুলি

সাধারণ ত্রুটি

আপনি যদি নিম্নলিখিত ত্রুটিটি পান: একটি অপরিবর্তনীয় বস্তুর উদাহরণে '(0)। (1)' সঞ্চার করতে পারেন না। এটি এমন হতে পারে যে আপনি নিম্নলিখিত সীমাবদ্ধতার একটিতে চলে গেছেন:

  • স্থানীয় মান নির্ধারণ না করে আপনি একটি নির্ভরশীলতা সম্পত্তি অ্যানিমেট করছেন
  • আপনি একটি নির্ভরশীলতা সম্পত্তি অ্যানিমেট করছেন যাঁর বর্তমান মানটি অন্য সংবিধানে সংজ্ঞায়িত করা হয়েছে যা সংস্থানীয় অভিধানে মার্জ করা হয়নি।
  • আপনি বর্তমানে ডেটাবাউন্ডের একটি মান অ্যানিমেট করছেন

1

INotifyPropertyChanged বা DependencyProperties ছাড়াই বাঁধাই

এখানে আলোচিত হিসাবে আপনি INotifyPropertyChanged ব্যতীত একটি সরল সিএলআর অবজেক্ট সম্পত্তি বাঁধাই করতে পারেন, এবং এটি ঠিক কাজ করবে ।

এখানে আমি ফর্ম্পোস্ট উল্লেখ করছি।

উদ্ধৃতি:

[...] ডাব্লুপিএফের ডেটা বাইন্ডিং ইঞ্জিনটি ডেটা প্রোপার্টিডিজিপ্টারের উদাহরণের সাথে আবদ্ধ করবে যা উত্স সম্পত্তিটি মোড়ায় যদি সোর্স অবজেক্টটি সরল সিএলআর অবজেক্ট হয় এবং আইএনওটিফাইপ্রটিটি চেঞ্জড ইন্টারফেস প্রয়োগ করে না। এবং ডেটা বাইন্ডিং ইঞ্জিন প্রপার্টিডেস্কিটার.এডডভ্যালুচেনজড () পদ্ধতির মাধ্যমে সম্পত্তি পরিবর্তিত ইভেন্টটিতে সাবস্ক্রাইব করার চেষ্টা করবে। এবং যখন লক্ষ্যযুক্ত ডেটা আবদ্ধ উপাদান সম্পত্তি মান পরিবর্তন করে, ডেটা বাইন্ডিং ইঞ্জিন পরিবর্তিত মানটিকে উত্সের সম্পত্তিটিতে স্থানান্তরিত করার জন্য প্রপার্টিডেস্কিটার.সেটভ্যালু () পদ্ধতিটি কল করবে এবং এটি একই সাথে অন্যান্য গ্রাহকদেরকে অবহিত করার জন্য ভ্যালু চেঞ্জড ইভেন্টকে উত্থাপন করবে (এই উদাহরণে, অন্যান্য গ্রাহকরা তালিকাবক্সের মধ্যে টেক্সটব্লকগুলি হবেন।

এবং যদি আপনি INotifyPropertyChanged প্রয়োগ করছেন, আপনি সেই বৈশিষ্ট্যের প্রতিটি সেটে পরিবর্তনের বিজ্ঞপ্তিটি প্রয়োগ করার জন্য পুরোপুরি দায়বদ্ধ যা ইউআই-তে ডেটা আবশ্যক। অন্যথায়, পরিবর্তনটি আপনার প্রত্যাশার মতো সিঙ্ক্রোনাইজ হবে না [[...]

এই বিষয়ে আরও একটি দুর্দান্ত এবং বিস্তারিত নিবন্ধ এখানে ।

নোট করুন ব্যবহার করার সময় এটি কেবল কাজ করে নোট করুন । আপনি কোড থেকে মানগুলি আপডেট করলে পরিবর্তনটি জানানো হবে না । [...]

INotifyPropertyChanged বাস্তবায়ন করা মোটামুটি ক্লান্তিকর উন্নয়ন কাজ হতে পারে। তবে আপনাকে সেই কাজটি আপনার ডাব্লুপিএফ অ্যাপ্লিকেশনের রানটাইম পাদপ্রিন্টের (মেমরি এবং সিপিইউ) বিপরীতে করতে হবে। আইএনপিসি নিজে প্রয়োগ করা রানটাইম সিপিইউ এবং মেমরির সংরক্ষণ করবে

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