powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ItemsSource DataGrid привязать к модели
7 сообщений из 7, страница 1 из 1
ItemsSource DataGrid привязать к модели
    #38669850
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Подскажите пожалуйста как можно свойство public List<Table> находящееся в модели
забиндить DataGrid? Делаю так не выходит

Код: xml
1.
<DataGrid ItemsSource="{Binding Path=Items}" AutoGenerateColumns="True" />



Код: c#
1.
2.
3.
4.
5.
6.
public List<File> Items; // Здесь все работает, массив заполняется данными

public MainDeloModel(NavigationService navigationService)
{
      var db = Object.GetInstance<TestDb>();
      Items = db.Set<Test_table>().ToList();
...
Рейтинг: 0 / 0
ItemsSource DataGrid привязать к модели
    #38669856
keksuem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде так:
Код: sql
1.
2.
- <DataGrid ItemsSource="{Binding Path=Items}" AutoGenerateColumns="True" />
+ <DataGrid ItemsSource="{Binding}" Name="dg" AutoGenerateColumns="True" />



Код: sql
1.
+ dg.ItemsSource = Items;



Но не проверял, попробуй.
...
Рейтинг: 0 / 0
ItemsSource DataGrid привязать к модели
    #38669857
keksuem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, нужно еще ItemTemplate сделать. Если не разберешься - напиши, попробую помочь, хотя сам не шарю тоже :)
...
Рейтинг: 0 / 0
ItemsSource DataGrid привязать к модели
    #38670002
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не выходят данные в DataGrid.

Делаю так:

//Views/MainView.xaml
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" 
		x:Class="Delo.Views.MainView"
        Title="Дело" Height="518" Width="1028" WindowStartupLocation="CenterScreen" Loaded="MainView_OnLoaded">
    <DockPanel LastChildFill="True">
        
        ...		

        <DockPanel>
            <Frame x:Name="Browser" NavigationUIVisibility="Hidden" />

        </DockPanel>
    </DockPanel>
</Window>



//Views/MainView.cs
...
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
private void MainView_OnLoaded(object sender, RoutedEventArgs e)
        {
            var navigationService = Browser.NavigationService;

            MainViewModel mainModel = new MainViewModel(navigationService); // В этой модели я положил навигацию
            DataContext = mainModel;

            var DeloModel = new MainDeloModel (navigationService); // В модели я создаю public list<Table>
            var DeloView = new MainDelo { DataContext = DeloModel }; // В view я создаю datagrid

            Browser.Navigate(DeloView); // Здесь veiw выгружаю в frame
        }



//Views/MainDelo.xaml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<Page x:Class="LandFlow.Views.MainDelo"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"
	Title="Delo">
    <Grid>                
        <DataGrid ItemsSource="{Binding Path=Items}" AutoGenerateColumns="True" />
    </Grid>
</Page>



//ViewModels/MainDeloModel.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class MainDeloModel
    {
        public List<File> Items;
        public MainDeloModel(NavigationService navigationService)
        {
            var db = ObjectFactory.GetInstance<LandFlowDb>();
            Items = db.Set<File>().ToList(); // Здесь я получаю массив с данными из таблицы               
        }
    }



Почему данные не поподают в DataGrid?
...
Рейтинг: 0 / 0
ItemsSource DataGrid привязать к модели
    #38670260
Фотография @k@DElpher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы задаете вопрос про привязку к модели, а нам приводите кучу кода про навигацию. Старайтесь в таком случае сначала искать ошибку на чистом проекте. В данном случае на одном окне с гридом.

Код: c#
1.
            public List<File> Items; // Здесь все работает, массив заполняется данными



Прявязку нужно осуществлять к свойству(Property), в данном случае это поле (Field). То есть строчку выше заменить на что-нибудь вроде:

Код: c#
1.
            public List<File> Items {get;set;} // Здесь все работает, массив заполняется данными
...
Рейтинг: 0 / 0
ItemsSource DataGrid привязать к модели
    #38670388
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось, данные вышли в grid. Спасибо.
...
Рейтинг: 0 / 0
ItemsSource DataGrid привязать к модели
    #38671212
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Биндинг работает только между
DependecyProperty и DependencyProperty
или
DependencyProperty и Public class Property
для
приемника и источника соответственно.
Нельзя делать привязку к члену класса не являющегося свойством.
к полю public string Name; невозможно забиндить, можно только к
public string Name { set;get;}
либо к DependecyProperty типа:

public string Name
{
get { return (string)GetValue(NameProperty); }
set { SetValue(NameProperty, value); }
}
// Using a DependencyProperty as the backing store for Name. This enables animation, styling, binding, etc...
public static readonly DependencyProperty NameProperty =
DependencyProperty.Register("Name", typeof(string), typeof(<Class>), new PropertyMetadata(string.Empty));
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ItemsSource DataGrid привязать к модели
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]