IsFocused в MVVM TreeView - PullRequest
       16

IsFocused в MVVM TreeView

1 голос
/ 30 декабря 2011

Я реализовал MVVM TreeView в моем коде. я хочу, чтобы акцент был сделан на новейшем TreeViewItem в моем дереве (я продолжаю обновлять treeview) я попробовал следующее:

<TreeView ItemsSource="{Binding NotificationViewModel}" Name="MainTree">
    <TreeView.ItemContainerStyle>
        <!-- This Style binds a TreeViewItem to a NotificationViewModel. -->
        <Style TargetType="{x:Type TreeViewItem}">
            <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
            <Setter Property="IsFocused" Value="{Binding IsFocused, Mode=TwoWay}" />
        </Style>
    </TreeView.ItemContainerStyle>

и в ViewModel:

// Constructor
public NotificationListViewModel(Notification notification)
{
    _notification = notification;

    _activityListViewModel = new ObservableCollection<ActivityListViewModel>();

    _isSelected = true;

    _isFocused = true;
}


private bool _isFocused;

public bool IsFocused
{
    get { return _isFocused; }
    set
    {
        if (value != _isFocused)
        {
            _isFocused = value;
            this.OnPropertyChanged("IsFocused");
        }
    }
}

но я получаю следующую ошибку:

Ошибка 1 Установщик свойств 'IsFocused' не может быть установлен, поскольку он не иметь доступного набора аксессоров. Строка 115, позиция 29. C: \ My Visual Studio Проекты \ MainTreeView \ View \ NotificationListView.xaml 115 29

почему я не могу реализовать фокус, как IsSelected и IsExpanded?

1 Ответ

1 голос
/ 30 декабря 2011

Свойство IsFocused доступно только для чтения и поэтому не может установить фокус на элемент управления. Подробнее см. UIElement.IsFocused на MSDN .

Вместо этого вы можете использовать метод Focus() в древовидной структуре.

...