ما هو بناء جملة XAML الأقصر المتعدد باستخدام StringFormat مع ارتباطات متعددة؟
-
13-09-2019 - |
سؤال
للحصول على ملزمة واحدة، نستخدم:
<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}"/>
لا تنتمي إلى StackOverflow