Как изменить заголовок вкладки по умолчанию для подробного экрана Visual Studio 2011 RC Lightswitch?

У меня есть простая точка доступа Lightswitch, которую я создаю для использования в своем бизнесе и в качестве теста Lightswitch. Приложение использует одну таблицу со многими полями, поэтому я использую экран списка-подробности с основной информацией, отображаемой для выбранного элемента, а также 3 кнопки, которые открывают специальные подробные экраны. Проблема, с которой я сталкиваюсь, заключается в том, что каждый экран подробностей открывается на вкладке с идентичным заголовком первого поля в таблице - Имя таблицы (т.е. "HP - Оборудование"). все, что я могу найти, вы должны переопределить DisplayName в методе InitializeDataWorkspace() для этого экрана, но я просто вижу, как мой заголовок ненадолго мерцает, поскольку экран создается только для перезаписи по умолчанию.

Не так много кода, чтобы показать...

partial void FinancialDetail_InitializeDataWorkspace(List<IDataService> saveChangesTo)
{
    // Write your code here.
    this.DisplayName = "Financial Detail";
}

person Mike B    schedule 03.07.2012    source источник
comment
ОК, я только что обнаружил, что если я использую часть данных объекта в метке, то это работает. т. е. this.DisplayName = Финансовая информация + this.equipment.model;   -  person Mike B    schedule 03.07.2012
comment
Это только частичный ответ, поскольку метка, которую я хотел, была фиксированным текстом без чего-либо от сущности.   -  person Mike B    schedule 03.07.2012
comment
это прикольно. Вы уверены, что это данные объекта, а не просто уникальное отображаемое имя. я бы использовал dotPeek для поиска всех ссылок на this.DisplayName.   -  person Jake Berger    schedule 03.07.2012


Ответы (1)


Наконец-то я нашел правильный ответ. Это изменилось в VS11, поэтому поиски всегда давали неправильный ответ.

Каждый экран теперь имеет методы по умолчанию, если вы просматриваете код экрана. Код по умолчанию отображается в виде комментариев. Вы должны установить имя во всех трех местах.

        partial void Equipment_Loaded(bool succeeded)
    {
        //this.SetDisplayNameFromEntity(this.Equipment);
        this.DisplayName = this.Equipment.UnitID + " - Financials";
    }

    partial void Equipment_Changed()
    {
        //this.SetDisplayNameFromEntity(this.Equipment);
        this.DisplayName = this.Equipment.UnitID + " - Financials";
    }

    partial void FinancialDetail_Saved()
    {
        //this.SetDisplayNameFromEntity(this.Equipment);
        this.DisplayName = this.Equipment.UnitID + " - Financials";
    }
person Mike B    schedule 24.07.2012