ما هو وسيلة جيدة لبالحدود وValueConverter المستخدمة في ControlTemplate؟

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

سؤال

وعنصر تحكم قالب أعمل على يستخدم ValueConverter مثل ذلك:

<ListBox>
   <ListBox.Resources>
      <Controls:CodeDescriptionValueConverter x:Key="CodeDescriptionValueConverter"/>
   </ListBox.Resources>
   <ListBox.ItemTemplate>
      <DataTemplate>
         <TextBlock Text="{Binding Converter={StaticResource CodeDescriptionValueConverter}"/>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

وهذه هي نظرة الافتراضية التي I نورد في generic.xaml. عند استخدام هذا التحكم سوف تحتاج إلى تمرير سلاسل شكل مختلفة في المحول. هل هناك طريقة لتحقيق ذلك دون توفير ControlTemplate الكامل؟

وكان فكرتي الأولى أن أتمكن من استخدام ConverterParameter مع TemplateBinding إلى خاصية على السيطرة، ولكن اكتشفت أن ConverterParameters لا يمكن أن تكون ملزمة ل. وثمة خيار آخر يمكن أن يكون للوصول إلى عنصر التحكم من طريقة ConvertTo، ثم سلخ تلك الممتلكات. لست متأكدا من كيفية القيام بذلك. أي خيارات من شأنها أن تقضي على الحاجة إلى إعادة القالب تماما لسيطرة كل مرة استخدمه سيكون من المفيد (انها الكثير من XAML).

هل كانت مفيدة؟

المحلول

في هذه الحالات، وأنا عموما تفعل أحد أمرين:

1) ربط إلى كائن لديه الوصول إلى كل من الخاصية التي تريد ربط سلسلة التنسيق. في تحويل وعندها يمكنك الحصول على كل الممتلكات وسلسلة التنسيق.

2) إضافة خصائص لديك كائن بيانات / viewmodel / الخ لسلسلة التنسيق وتنسيق النص. ثم ربط خصائص تنسيق النص. على افتراض أن كنت تستخدم INotifyPropertyChanged، أن نضع في اعتبارنا أن ستحتاج إلى إطلاق الحدث propertychanged للخاصية تنسيق النص كلما قمت بتغيير النص أو الشكل خصائص السلسلة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top