Службы RIA / DataForm: как использовать атрибуты ReadOnly & Description вместе - PullRequest
1 голос
/ 20 июня 2010

У меня есть несколько случаев, когда у меня есть свойство, которое я хочу объявить только для чтения, но также даю некоторые объяснения того, как оно рассчитывается / устанавливается с помощью атрибута [Display (Description = "")]. Я хотел бы сделать это в метаданных, если это возможно, вместо переопределения в самой форме данных.

Вот пример:

    [Display(Description = "Total number of travel hours, calculated as total hrs worked - actual working hrs this month")]
    public decimal TravelHours
    {
        get
        {  
            return this.TotalHrsWorked - this.ActualWorkedHours;
        }
    }

Это описание не будет отображаться как DescriptionViewer при привязке к этому свойству в DataForm & DataField.

Кажется, что когда я устанавливаю атрибут [ReadOnly], он скрывает DescriptionViewer, и даже настройка DescriptionViewerVisibility = Visible в форме данных xaml все равно не меняет его. Кроме того, любые вычисляемые свойства (без установщика), по-видимому, имеют этот атрибут по умолчанию. Это немного раздражает, потому что это те, для которых я действительно хочу показать зрителя описания.

Единственный способ обойти это, как я обнаружил, это сделать свойство не только для чтения и добавить фиктивный установщик (для вычисляемых свойств). Это похоже на клудж.

Есть ли способ показать средство просмотра формы данных / поля данных для свойств только для чтения?

Ответы [ 2 ]

1 голос
/ 17 октября 2012

Да, я сталкивался с той же проблемой раньше, но не пытался справиться.Атрибут отображения и атрибуты ReadOnly запечатаны, и вы не можете их наследовать.Вы можете обернуть их и создать другой атрибут, но ваша форма данных теперь не имеет этого атрибута. Так что вы не можете ...

Возможно, вы можете делать разные вещи в ReadOnlyTemplate

        <dataFormToolkit:DataForm.ReadOnlyTemplate>
          <DataTemplate>
              <Grid>                
            <dataFormToolkit:DataField Label="{Binding ReadOnlyLabel,
                Converter=ReadOnlyOrNotConverter}" >
                <TextBox Text="{Binding Path=ReadOnlyValueEtc, Mode=TwoWay}" />
            </dataFormToolkit:DataField>

Надежда помогает,

С уважением!

1 голос
/ 04 ноября 2010
[Display(Order = 6, Name = "CountryLabel", Description = "CountryDescription",
ResourceType = typeof(EntityDataStrings))]

Где EntityDataStrings - файл ресурсов, содержащий значения для "CountryLabel" и "CountryDescription".

...