Как развернуть один узел в древовидном наборе инструментов Silverlight с помощью MVVM? - PullRequest
1 голос
/ 15 сентября 2011

Как развернуть узел в древовидной структуре с помощью MVVM?

У меня есть древовидное представление уровня x, и я создал свой собственный класс, чтобы связать его с элементом управления TreeView.

Мне удалось установить для свойства IsSelected значение true при создании списка TreeView. Поэтому мне просто нужно привязать мое значение IsSelected к свойству TreeViewItem IsSelected, но это не так просто ...

Вот мой класс:

public class HierarchicalItem : Model
{
    public string Name { get; set; }
    public int Id { get; set; }

    private bool _IsSelected;
    public bool IsSelected
    {
        get { return _IsSelected; }
        set
        {
            if (_IsSelected != value)
            {
                _IsSelected = value;
                RaisePropertyChanged("IsSelected");
            }
        }
    }

    private ObservableCollection<HierarchicalItem> _children;
    public ObservableCollection<HierarchicalItem> Children
    {
        get
        {
            return _children;
        }
        set
        {
            if (_children != value)
            {
                _children = value;
                RaisePropertyChanged("Children");
            }
        }
    }
}

Я пробовал это с IsSelected и IsExpanded:

<controls:TreeView.ItemContainerStyle>
    <Style TargetType="controls:TreeViewItem">
        <Setter Property="IsSelected" Value="{Binding IsSelected}" />
    </Style>
</controls:TreeView.ItemContainerStyle>

Но возвращается, что IsSelected и IsExpanded только для чтения (это работает в WPF).

Я искал много решений для этого, но ни одно из них не работает для меня, потому что у меня есть динамические древовидные представления в списке и в каждом из древовидных представлений мне нужно развернуть весь путь до узла, который имеет данный Id. Например, я хочу развернуть все узлы с Id = 30 в каждом древовидном списке.

1 Ответ

0 голосов
/ 15 сентября 2011

К сожалению, в Silverlight 4 невозможно установить привязки для установщиков стилей.

Один из способов установить IsExpanded, который, по общему признанию, не так уж и хорош, - это установить привязку к ToggleButton в шаблоне элемента управления TreeViewItem. Если вы перейдете к http://msdn.microsoft.com/en-us/library/dd728671(v=vs.95).aspx, вы можете получить шаблон элемента управления по умолчанию для TreeViewItem. Вы можете скопировать это и заменить следующее: с

...