Службы RIA / DataForm: как использовать атрибуты ReadOnly и Description вместе

У меня есть несколько случаев, когда у меня есть свойство, которое я хочу объявить только для чтения, но я также дам некоторое объяснение того, как оно рассчитывается / устанавливается с помощью атрибута [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 по-прежнему не меняет его. Кроме того, для любых вычисляемых свойств (без установщика) этот атрибут применяется по умолчанию. Это немного раздражает, потому что это те, для которых я действительно хочу показать программу просмотра описаний.

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

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


person Dale    schedule 20.06.2010    source источник


Ответы (2)


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

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

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

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

С Уважением!

person Davut Gürbüz    schedule 17.10.2012

[Display(Order = 6, Name = "CountryLabel", Description = "CountryDescription",
ResourceType = typeof(EntityDataStrings))]

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

person Phil    schedule 04.11.2010