ما هو بناء جملة XAML الأقصر المتعدد باستخدام StringFormat مع ارتباطات متعددة؟

StackOverflow https://stackoverflow.com/questions/1861009

سؤال

للحصول على ملزمة واحدة، نستخدم:

<TextBlock>
  <TextBlock.Text>
    <MultiBinding StringFormat="{}{0}">
      <Binding Path=EmployeeName/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

أو بناء جملة أقصر:

<TextBlock 
 Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding Path=EmployeeName}}"/>

الآن، إذا كان لديك multibiting:

<TextBlock>
  <TextBlock.Text>
    <MultiBinding StringFormat="{}{0}, {2}">
      <Binding Path="EmployeeName"/>
      <Binding Path="Age"/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

كنت أتساءل، ماذا سيكون بناء الجملة أقصر؟

<TextBlock 
 Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding ??????}"/>
هل كانت مفيدة؟

المحلول

وفقا ل MSDN، يجب ألا تعمل مثالك الثاني ("بناء الجملة الأقصر باستخدام multibding مع ملزمة واحدة")، ولا في أي منها .NET 3.5. ولا في .NET 4.0.:

ملحوظة:

لا تدعم multibiting و pretilebinding بناء جملة ملحق XAML (على الرغم من مشاركة نفس فئة BindingBase، والتي تنفذ في الواقع سلوك XAML للربط).

لذلك، إذا كان يعمل من أجلك، فهذا عن طريق الصدفة، وهو غير مدعوم بالسلوك.


ملاحظة: لا تحتاج إلى استخدام multibding ل غير متزوج ربط. يجب أن يكفي ما يلي:

<TextBlock>
    <TextBlock.Text>
        <Binding Path="EmployeeName" />
    </TextBlock.Text>
</TextBlock>

أو

<TextBlock Text="{Binding Path=EmployeeName}"/>

أو حتى أقصر

<TextBlock Text="{Binding EmployeeName}"/>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top