У меня есть форма данных, привязанная к свойству в моей модели представлений в приложении Silverlight. Я создал классы объектов с помощью служб WCF RIA, и каждое свойство имеет атрибут DisplayName, который показан на этикетке поля данных формы данных. мне нужно добавить «:» в конце каждой метки в настраиваемых полях данных, которые я создаю. Причина, по которой мне это нужно, это потому, что у меня есть сетка на моей странице, привязанная к списку текущих объектов (например, сотрудники), и я не хочу «:» в конце заголовков сетки, но я также need ":", когда я пытаюсь изменить или добавить нового сотрудника.Изменение значения Silverlight DataForm: значение метки DataField во время выполнения
Это то, что я сделал до сих пор, но он не работает.
public class CustomDataField : DataField
{
public CustomDataField()
{
}
public new object Label
{
get { return base.Label; }
set
{
base.Label = value;
if(value is string)
{
base.Label = (string)value + ":";
}
}
}
}
Это точно, я не хочу использовать AutoGeneratingField, а также, как вы знаете, когда вы привязываете элемент управления (например, TextBox) в поле данных, метка устанавливается автоматически (из атрибута DisplayName объекта данных) что я должен иметь возможность редактировать. не устанавливайте этикетку голыми руками;) Первое, что мне пришло в голову, - создать класс и наследовать от базы и тени свойство метки, но поскольку ярлык никогда не устанавливается, вы не можете изменить значение. Мне нужно знать, когда DataField устанавливает свойство Label. – Peymankh
@Peymankh Только мое первое предложение касалось создания DataFields вручную. Вы пробовали другие три? Это общие и многоразовые. Вы получите доступ к сгенерированному DataField. Возможно, вам потребуется добавить слушателя для свойства Label. Как это сделать, посмотрите здесь: http://stackoverflow.com/questions/834929/silverlight-how-to-receive-notification-of-a-change-in-an-inherited-dependencypr – herzmeister
Я думаю, что наследование DataField, как вы пробовали, не так легко, или вы нашли способ сообщить DataForm о создании экземпляров вашего класса CustomDataField вместо обычного класса DataField? Тем не менее, другим вариантом было бы изменить исходный код напрямую. Инструментарий является открытым исходным кодом, поэтому просто свяжите проект с источником. – herzmeister