মাল্টি-বাইন্ডিংয়ে কীভাবে আমি 1 বাঁধার জন্য একটি ধ্রুবক মান পাস করতে পারি?


100

আমার একটি মাল্টি-বাঁধাইয়ের মতো রয়েছে

<TextBlock>
    <TextBlock.Text>
        <MultiBinding Converter="{StaticResource myConverter}">
            <Binding Path="myFirst.Value" />
            <Binding Path="mySecond.Value" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

এবং আমি উপরের দুটি বাইন্ডিংয়ের মধ্যে একটিতে একটি নির্দিষ্ট মান যেমন "123" পাস করতে চাই। এক্সএএমএল ব্যবহার করে আমি কীভাবে এটি করতে পারি?


4
কোন কোড স্নিপেট / উদাহরণ দয়া করে?
টর্স্টেন

আমি মনে করি যে প্রশ্নের কিছু অংশ অনুপস্থিত রয়েছে, আপনি উপরের বাঁধাইয়ের বিষয়ে উল্লেখ করছেন তবে আমি প্রশ্নের কোনও বাধ্যতামূলক কোড দেখতে পাচ্ছি না।
আকজোশি

4
যেহেতু প্রতিবার আমার কোনও প্রশ্ন থাকলে কারও কাছে আগের একই প্রশ্ন ছিল :) দুর্দান্ত!
ইগনাসিও সোলার গার্সিয়া

4
: এই কাজ করতে একটি চতুর্থ উপায় এই উত্তরটি ব্যবহার করতে হবে stackoverflow.com/a/2552911/222134
জনি Skovdal

উত্তর:


151

আপনার মানটি যদি একটি সাধারণভাবে হয় তবে stringআপনি এটি Sourceএকটি বাঁধার সম্পত্তিতে ধ্রুবক হিসাবে নির্দিষ্ট করতে পারেন । যদি এটি অন্য কোনও আদিম ডেটা ধরণের হয় তবে আপনার একটি স্থিতিশীল সংস্থান নির্ধারণ করতে হবে এবং এটিকে রেফারেন্স করতে হবে।

নির্ধারণ sysদিকে নির্দেশ XAML রুট মধ্যে নামস্থান Systemmscorlib, এবং নিম্নলিখিত কাজ করা উচিত:

<TextBlock>
  <TextBlock.Resources>
    <sys:Int32 x:Key="fixedValue">123</sys:Int32>
  </TextBlock.Resources>
  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource myConverter}">
      <Binding Path="myFirst.Value" />
      <Binding Source="{StaticResource fixedValue}" />
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

4
@ টাফটিম এটি কারণ মাল্টিবাইন্ডিংয়ের সংস্থান আছে বলে মনে হচ্ছে না। পরিবর্তে টেক্সটব্লক.সম্পদগুলি ব্যবহার করুন ...
মার্টিন

6
হতে পারে আপনার xMLns যুক্ত করা উচিত: sys = "clr-namespace: সিস্টেম; সমাবেশ = mscorlib" আপনার সমাধানে ;-)
c0d3b34n

104

অথবা, উপরোক্ত দুটি উত্তর একত্রিত:

<MultiBinding Converter="{StaticResource ScalingConverter}">
    <Binding>
        <Binding.Source>
            <sys:Double>0.5</sys:Double>
        </Binding.Source>
    </Binding>
    <Binding ElementName="TC" Path="ActualWidth" />
</MultiBinding>

যেগুলি রিসোর্সেস ক্লেজ ছাড়াই সঠিক প্রকার সরবরাহ করে।


4
sysনথির xmlns:sys="clr-namespace:System;assembly=mscorlib"
সৌন্দর্য

27

আমি প্রশ্নটি পুরোপুরি অনুসরণ করি না তবে দুটি বিকল্প রয়েছে:

<Binding Source="123" />আপনার মাল্টিবাইন্ডিংয়ে রেখাটি রাখুন আপনার কনভার্টারের একটি সীমাবদ্ধ মান হিসাবে 123 কেটে যাবে।

ConverterParameter="123"আপনার মাল্টিবাইন্ডিং এ রাখুন :

<MultiBinding Converter="{StaticResource conv}" ConverterParameter="123">


<বাইন্ডিং উত্স = "123" /> নির্ভরতা
প্রপার্টি

<বাইন্ডিং উত্স = "123" /> আমার ক্ষেত্রে পূর্ণসংখ্যার চেয়ে দ্বিগুণ বা দ্বিগুণ পরিবর্তনের পরিবর্তে "123" স্ট্রিংটি পাস করে।
মার্সেল গোসেলিন

ইন IValueConverter, প্যারামিটারগুলি হিসাবে পাস করা হয় object, যার অর্থ আপনার নিরাপদ উপায়ে মানটি সঠিক ধরণের করতে হবে। IValueConverter.Convers
benPearce

6

আমি এটি বিশেষত ভাল উত্তর বলছি না তবে এখানে আরও একটি পদ্ধতির উপায় রয়েছে:

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