কোডের পিছনে ক্যানভাস? বাম সম্পত্তি পরিবর্তন করবেন?


98

আমার এক্সএএমএল-তে আমার একটি আয়তক্ষেত্র রয়েছে এবং এর Canvas.Leftসম্পত্তিটির পিছনে কোডটি পরিবর্তন করতে চাই :

<UserControl x:Class="Second90.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300" KeyDown="txt_KeyDown">
    <Canvas>
        <Rectangle 
            Name="theObject" 
            Canvas.Top="20" 
            Canvas.Left="20" 
            Width="10" 
            Height="10" 
            Fill="Gray"/>
    </Canvas>
</UserControl>

তবে এটি কার্যকর হয় না:

private void txt_KeyDown(object sender, KeyEventArgs e)
{
    theObject.Canvas.Left = 50;
}

সিনট্যাক্স এটি করার জন্য কি কেউ জানেন?

উত্তর:


165
Canvas.SetLeft(theObject, 50)


+1, প্রেমের প্রকারের সুরক্ষা। যদিও আমি সেটেলফ্ট নির্ভরশীল অবজেক্টের পরিবর্তে ইউআইএলমেন্ট নেয় কেন তা আমি আগ্রহী
জ্যারেডপাড়

4
@ জেয়ার্ডপাড়: একটি অনুমানের সাথে আমি বলব যেহেতু সেটলফট বিশেষত ক্যানভাসের একটি পদ্ধতি এটি বুঝতে পারে যে এটি কোন ধরণের বাম সম্পত্তি প্রদান করবে property এটি এটিকে ইউআইএলমেন্ট বলে মনে করে, এটি সম্ভবত ত্রুটিযুক্ত কোড সনাক্তকরণ বৃদ্ধি করে যেখানে দুর্ঘটনাক্রমে ভুল ভেরিয়েবলটি এতে প্রেরণ করা হয়।
অ্যান্থনিডব্লু জোন্স

msdn.microsoft.com/en-us/library/... Canvas.Left একটি সংযুক্ত সম্পত্তি, যা একটি XAML ব্যবহার সমর্থন করে। কোডে এই সম্পত্তিটি সেট করার সময়, পরিবর্তে সেটলেট ব্যবহার করুন।
ইয়ুরি শাকাতুলা

51

এটা চেষ্টা কর

theObject.SetValue(Canvas.LeftProperty, 50d);

ডিপেন্ডেন্সিঅবজেক্টে (বেশিরভাগ ডাব্লুপিএফ ক্লাসের ভিত্তি) একাধিক পদ্ধতি রয়েছে যা সমস্ত নির্ভরতা বৈশিষ্ট্যগুলিতে সাধারণ অ্যাক্সেসের অনুমতি দেয়। তারা হয়

  • সেটভ্যালু
  • গেটভ্যালু
  • ক্লিয়ারভ্যালু

টার্গেটের ধরণ দ্বিগুণ হওয়ায় সম্পাদনাটি ডাবল আক্ষরিক ব্যবহারের জন্য সেট আপডেট করেছে।


ধন্যবাদ, এটি কাজ করার জন্য আমাকে পূর্ণসংখ্যাটি কাস্ট করতে হয়েছিল: দ্য অবজেক্ট.সেটভ্যালু (ক্যানভাস।লফ্টপ্রোপার্টি, (ডাবল) 50);
এডওয়ার্ড টাঙ্গুয়ে

না, এটির জন্য ডাবল ফর্ম্যাটে সংখ্যাসূচক ধ্রুবকটি নির্দিষ্ট করুন: হিওবজেক্ট.সেটভ্যালু (ক্যানভাস। লেফটপ্রোপার্টি, 50.0);
বুডা

12

যেহেতু আমরা 'অবজেক্ট'-এর সম্পত্তি পরিবর্তন করছি, জ্যারেডপারের পদ্ধতিতে সুগারেট ব্যবহার করা ভাল:

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