Отображение списка из базы данных в ListView, который уже связан - PullRequest
0 голосов
/ 12 декабря 2018

Чтобы уточнить, что происходит.В основном у меня есть привязка ListView, которая указывает на список внутри объекта.В этом же объекте (но не в списке) у меня есть другой список, который содержит строки, используемые для выпадающего списка, и я не могу назначить его моему представлению списка, так как DataContext уже установлен для первого упомянутого списка.Может кто-нибудь предложить решение или, еще лучше, более эффективный способ справиться с этим?

Просмотр

<ListView ItemsSource="{Binding myModel.myCollection}" Grid.Row="1" Grid.Column="0">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Name">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBox Text="{Binding Name, Mode=TwoWay}"></TextBox>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>

                    <GridViewColumn Header="Category Tag">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <ComboBox ItemsSource="{Binding myModel.CategoryList}"></ComboBox>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>

Модель

public class SiteUrlsModel : INotifyPropertyChanged
    {
        public string CaseName { get; set; }
        public List<string> TestList => new List<string> { "Test1", "Test2", "Test3" };

        public List<string> _categoryTagList;
        public List<string> CategoryTagList
        {
            get => _categoryTagList;
            set
            {
                if (_categoryTagList == value)
                    return;
                _categoryTagList = value;
                OnPropertyChanged();
            }
        }

        private ObservableCollection<SiteUrlsModel> _myCollection;
        public ObservableCollection<SiteUrlsModel> myCollection
        {
            get => _siteurlscCollection;
            set
            {
                if (_siteurlscCollection == value)
                    return;
                _siteurlscCollection = value;
                OnPropertyChanged();
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

Для простоты я исключил ViewModel и Code-Behind, но после InitialiseComponent () у меня есть DataContext = new TestViewModel () и вМоя ViewModel У меня есть свойство, которое создает новый экземпляр моей модели, а также добавляет геттер, чтобы убедиться, что все доступно.Будьте уверены, что список заполняется. Я просто пытаюсь заполнить один выпадающий список отдельно.

1 Ответ

0 голосов
/ 12 декабря 2018

Это происходит потому, что текстовый текст поля со списком будет элементом myModel.
Вам необходимо явно указать поле со списком, чтобы получить источник элемента из контекста данных его родителя.

<DataTemplate>
     <ComboBox ItemsSource="{Binding DataContext.myModel.CategoryList, RelativeSource={RelativeSource AncestorType=DataGrid}}"></ComboBox>
</DataTemplate>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...