আপনি কেবলমাত্র পূর্ণসংখ্যার অবস্থানগুলি আলাদা করতে কোনও ডাব্লুপিএফ স্লাইডার স্ন্যাপটি কীভাবে তৈরি করেন?


114

সবসময় প্রায়শই আমি ডাব্লুপিএফ স্লাইডারটি চাই যা সিস্টেমের মতো আচরণ করে W উইন্ডোজ.ফর্মস old ট্র্যাকবার পুরানো old এটি হ'ল, আমি এমন একটি স্লাইডার চাই যা এক্স থেকে Y পর্যন্ত যায় তবে ব্যবহারকারীকে এটি পৃথক পূর্ণসংখ্যার অবস্থানগুলিতে স্থানান্তর করতে দেয় move

স্লাইডারে মূল্য সম্পত্তি দ্বিগুণ হওয়ার কারণে ডাব্লুপিএফ-এ কীভাবে এটি করা যায়?

উত্তর:


95

আপনি যদি সঠিকভাবে আপনার টিক চিহ্নগুলি সেট করেন তবে আপনি ইসসন্যাপটোকটিকইনবলড ব্যবহার করতে পারেন । এটা আমার জন্য বেশ ভাল কাজ করেছে। বিশদ জানতে এমএসডিএন দেখুন ।


172

সহজ উত্তরটি হ'ল আপনি ইসন্যাপটোকটিকএনেবলড এবং টিকফ্রুয়েন্সি বৈশিষ্ট্যগুলি ব্যবহার করুন। এটি হ'ল টিক্সগুলিতে টুকরো টুকরো টানুন এবং টিক ফ্রিকোয়েন্সি 1 এ সেট করুন।

অথবা, অন্য কথায় ... টিক্সের সুবিধা নিন ... তবে আপনি যে টিকগুলি ছুঁড়ে মারছেন তা আপনাকে অবশ্যই দেখাতে হবে না।

নিম্নলিখিত xaml টুকরা দেখুন:

<Slider
    Orientation="Vertical"
    Height="200"
    Minimum="0"
    Maximum="10"
    Value="0"
    IsSnapToTickEnabled="True"
    TickFrequency="1"
/>

1
এই উত্তরটি গ্রহণযোগ্য হওয়া উচিত। একটি যাদুমন্ত্র মত কাজ করে. ধন্যবাদ
আশ্ববে

ধন্যবাদ @ আশ্বে ... ... আমি নিজের উত্তরটি গ্রহণযোগ্য হিসাবে চিহ্নিত করার চেয়ে উত্তরটির জন্য অন্য কাউকে ক্রেডিট দিতে চেয়েছিলাম ...
cplotts

এটি ডিজাইনারের মধ্যে সম্পত্তি সংলাপের সাধারণ অংশের অধীনে, তবে আমার মেশিনে, কমপক্ষে, এটি তত্ক্ষণাত্ দৃশ্যমান হয়নি কারণ অ্যাডভান্সড সাবসেকশনটি ভেঙে পড়েছিল এবং এটি উপেক্ষা করা খুব সহজ।
amonroejj

46

নির্দিষ্ট অবস্থানগুলিতে স্নাপ করতে চান তাদের জন্য , আপনি Ticksসম্পত্তিটিও ব্যবহার করতে পারেন :

<Slider Minimum="1" Maximum="500" IsSnapToTickEnabled="True" Ticks="1,100,200,350,500" />

10

স্ন্যাপ কৌশলটি কার্যকর তবে এর সীমাবদ্ধতা রয়েছে, উদাহরণস্বরূপ যদি আপনি কেবল বৈধ টিক্সের একটি উপসেট দেখাতে চান। আমি দুটি বিকল্পের সাথে সাফল্য পেয়েছি: হয় একটি পূর্ণসংখ্যার সাথে আবদ্ধ বা নতুন মানকে গোল করে। এখানে একটি সম্মিলিত উদাহরণ:

public int MyProperty { get; set; }

private void slider1_ValueChanged(object sender,
    RoutedPropertyChangedEventArgs<double> e)
{
    (sender as Slider).Value = Math.Round(e.NewValue, 0);
}

<Slider
    Name="slider1"
    TickPlacement="TopLeft"
    AutoToolTipPlacement="BottomRight"
    ValueChanged="slider1_ValueChanged"
    Value="{Binding MyProperty}"
    Minimum="0" Maximum="100" SmallChange="1" LargeChange="10"
    Ticks="0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100"/>

উভয়ের পারফরম্যান্স কীভাবে স্ন্যাপ ট্রিকের সাথে তুলনা করে সে সম্পর্কে আমার ধারণা নেই তবে আমার কোনও সমস্যা হয়নি।

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


সুতরাং এটি ব্যবহারকারীর স্লাইডারে অন্যান্য মানগুলিও থাকতে দেয়? অথবা এটি এখনও কেবল টিক্সের মান চয়ন করার অনুমতি দেয়। এক অদ্ভুত প্রশ্ন ... আশা করি আপনি বুঝতে পারছেন আমি কী জিজ্ঞাসা করছি।
জেলট

1
@ জেলট: আপনি কেবলমাত্র Ticksমান (0, 10, 20, ...) এ স্ন্যাপ করতে পারেন তবে এর মধ্যে থাকা সমস্ত মানগুলি (1, 2, ...) বৈধ এবং উদাহরণস্বরূপ তীর কী দ্বারা নির্বাচন করা যেতে পারে।
mkjeldsen

ওহ ঝরঝরে। আমি বুঝতে পারি নি ... ধন্যবাদ!
জেলট

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