зависимое свойство не изменяется при изменении через установщик представлений списка во время разработки - PullRequest
0 голосов
/ 24 января 2011
[Category("SomeCat")]
[Description("Gets or sets how items are displayed in the ShellListView control.")]
[DefaultValue(View.Details)]
new public View View
{
    get { return base.View; }
    set
    {
        System.Diagnostics.Debug.WriteLine("View");

        if (value != View.LargeIcon)
        {
            //Reset these values because they can only be true if LargeIcon is set.
            ShowExtraLargeIcons = false;
        }

        base.View = value;
    }
}    

private bool m_ShowExtraLargeIcons;

[Category("Appearance")]
[DefaultValue(false)]
public bool ShowExtraLargeIcons
{
    get { return m_ShowExtraLargeIcons; }
    set
    {
        if (m_ShowExtraLargeIcons == value) 
            return;

        System.Diagnostics.Debug.WriteLine("Extra");

        m_ShowExtraLargeIcons = value;

        if (m_ShowExtraLargeIcons)
        // Always set view to LargeIcon if ShowExtraLargeIcons is enabled
            View = View.LargeIcon;
    }
}

Моя проблема: если я устанавливаю View для чего-то другого, кроме LargeIcons (через менеджер свойств VS 2010), свойство ShowExtraLargeIcons остается True, хотя для него установлено значение False.

Если для свойства ShowExtraLargeIcons задано значение True, для свойства View установлено значение LargeIcons, как и ожидалось.

Что может помочь: сообщения Debug («View» и «Extra») после настройки ShowExtraLargeIcons отображаются, после настройки View они не отображаются (оба установлены во время разработки).

Ответы [ 2 ]

2 голосов
/ 24 января 2011

Это не имеет ничего общего со свойствами зависимостей, это просто поведение браузера свойств.

Когда вы используете новый модификатор для члена класса, вы не создаете «переопределение».ListView.View не является виртуальной собственностью.Вы создаете совершенно новое свойство (MyListView.View) с такой же подписью и именем.

Браузер свойств будет перечислять свойства и использовать дескрипторы для работы с ними.Он увидит два совершенно разных свойства и либо отобразит оба, либо выберет одно произвольно.

0 голосов
/ 24 января 2011
new public View

Похоже, вы редактируете какой-то объект-парант, если трассировка не отображается. И этот объект паранета редактируется без влияния на m_ShowExtraLargeIcons var.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...