Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF Неработающий Binding / 25 сообщений из 31, страница 1 из 2
28.02.2013, 23:21
    #38170318
Stratus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Коллеги,

для понимания биндинга WPF сделал небольшой проектик,
Создал 2 Data Table - связал их, и вывел на форму с помощью конструктора "Источники данных".

Получилось 3 DataView 2 из Master(выводящий информацию из 2 datatable) а третий Detail

Так вот когда програмно я вношу данные в мастер таблицы, то то они связываются нормально и Detail отображает связанные данные.
Но когда я делаю ввод в таблицу с клавиатуры, то дитейл почемуто их неотображает, хотя ввод делается кооректно, и затем проверяется DataTable были ли добавлены туда данные.

В общем все пересмотрел перечитал - не помогает - может это проблема VS12?
Буду признателен за помощь - вот маленький проектик.
...
Рейтинг: 0 / 0
12.03.2013, 12:08
    #38181025
Stratus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Неужели никто не может помочь?.....
...
Рейтинг: 0 / 0
12.03.2013, 12:30
    #38181077
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Stratus,

да, помогу тебе.
забудь про мастера студии.
сделай сам.

а в этой куче кода мало, кто захочет разбираться.
я загрузил твой пример, но там не работает, даже так, как ты описываешь.
думаю другие также посмотрели, твой пример, который не работает и забили.
...
Рейтинг: 0 / 0
12.03.2013, 15:04
    #38181434
Stratus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Странно, делал в VS2012, у меня грузится....

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

Ок, выкладываю код....

Проблема в 2-х словах: В таблицу master вносятся данные программно с помощью кнопки, затем вносятся данные вручную, те данные которые были введены программно отображаются в таблице tetail, а поданным введенным с клавиатуры информация не отображается...почему не понятно.
Дата-сет выглядит следующим образом: 2 таблицы Customer(Fullname, Num) и Order(Date, Num). Связаны по отношению, связь 1 ко многим (Num,Num).

Но все таки хочется разобраться почему так происходит то ли мастер криво генерит код, то ли я что о делаю не так

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfTest" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="WpfTest.MainWindow"
        Title="MainWindow" Height="542.933" Width="784.717" Loaded="Window_Loaded_1">
    <Window.Resources>
        <local:MainDataSet x:Key="mainDataSet"/>
        <CollectionViewSource x:Key="customerViewSource" Source="{Binding Customer, Source={StaticResource mainDataSet}}"/>
        <CollectionViewSource x:Key="customerOrderViewSource" Source="{Binding Customer_Order, Mode=TwoWay, Source={StaticResource customerViewSource}}"/>
        <CollectionViewSource x:Key="orderViewSource" Source="{Binding Order, Source={StaticResource mainDataSet}}"/>
    </Window.Resources>

    <Grid DataContext="{StaticResource customerViewSource}">
        <Button Content="Add" HorizontalAlignment="Left" Margin="10,432,0,0" VerticalAlignment="Top" Width="757" Height="71" Click="Button_Click_1"/>
        <DataGrid x:Name="customerDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" Margin="10,10,367,303" RowDetailsVisibilityMode="VisibleWhenSelected">
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="fullNameColumn" Binding="{Binding FullName}" Header="Full Name" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="numColumn" Binding="{Binding Num}" Header="Num" Width="SizeToHeader"/>
            </DataGrid.Columns>
        </DataGrid>
        <DataGrid x:Name="orderDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding Source={StaticResource customerOrderViewSource}}" Margin="415,10,10,303" RowDetailsVisibilityMode="VisibleWhenSelected">
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="dateColumn" Binding="{Binding Date}" Header="Date" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="numColumn1" Binding="{Binding Num}" Header="Num" Width="SizeToHeader"/>
            </DataGrid.Columns>
        </DataGrid>
        <DataGrid x:Name="orderDataGrid1" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding Source={StaticResource orderViewSource}}" Margin="10,227,367,86" RowDetailsVisibilityMode="VisibleWhenSelected">
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="dateColumn1" Binding="{Binding Date}" Header="Date" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="numColumn2" Binding="{Binding Num}" Header="Num" Width="SizeToHeader"/>
            </DataGrid.Columns>
        </DataGrid>

    </Grid>
</Window>



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfTest
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainDataSet mainDataSet;
        int count = 0;
        
        public MainWindow()
        {
            InitializeComponent();
        }

        void Customer_RowChanged(object sender, DataRowChangeEventArgs e)
        {
            Console.WriteLine("Строка изменена " + e.Action.ToString() +"  "+ e.Row[0]);
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            DataRow newDataRow = mainDataSet.Customer.NewRow();
            newDataRow[0] = count;
            mainDataSet.Customer.Rows.Add(newDataRow);
            count++;
        }


        private void Window_Loaded_1(object sender, RoutedEventArgs e)
        {
            mainDataSet = ((WpfTest.MainDataSet)(this.FindResource("mainDataSet")));
            mainDataSet.Customer.RowChanged += Customer_RowChanged;
        }
    }
}
...
Рейтинг: 0 / 0
12.03.2013, 15:08
    #38181443
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Stratus,

ну это.
я ж говорил, что я скачал образец и код этот видел.
интерфейсы писать?
да в твоей задачке ни одного не требуется.
давай обсудим, как ты вообще представляешь это все себе.
...
Рейтинг: 0 / 0
12.03.2013, 15:11
    #38181450
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
твой проект у меня загрузился.
просто ты ж описывал мастер-подчиненную связь.
и я ее в упор там не увидел.
...
Рейтинг: 0 / 0
12.03.2013, 15:15
    #38181457
Stratus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
маленькая ремарка
в коде надо изменить строчку на:
newDataRow[1] = count;
...
Рейтинг: 0 / 0
12.03.2013, 15:17
    #38181461
Stratus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
в orderDataGrid отображаются подчиненные строки....
...
Рейтинг: 0 / 0
12.03.2013, 15:18
    #38181462
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Stratus,

не ремарка не помогла полноценно исползовать твою программу.
теперь токо ошибка валится.
я тебе говорю, давай просто опиши, какое поведение на этих трех гридах , ты хочешь реализовать.
...
Рейтинг: 0 / 0
12.03.2013, 15:21
    #38181472
Stratus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
AlexeiK,

Вообще есть дата Тейблы, есть привязанные к нему Гриды, есть связь....
все вроде работает нормально пока данные вводятся из кода по событию кнопки.
но если данные вводятся с клавиатуры почему то в orderDataGrid не отображаются подчиненные строки,
хотя тип вводится тотже и в таблицу вносятся изменения....

Почему данные введенныес клавиатуры игнорируются?
...
Рейтинг: 0 / 0
12.03.2013, 15:27
    #38181485
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Stratus,

я пробовал вводить в левом верхнем, потом в правом верхнем.
потом щелкал по строкам в ЛВ и в нижнем левом ничего не менялось.

ты сча задаешь вопрос, знаешь про что?
ты задаешь вопрос про, ту часть, которая генерит студия.
а эту часть все стараются избегать, потому что , там много лажи.

а толкователей, того, что творят мастера студии тут маловато.
...
Рейтинг: 0 / 0
12.03.2013, 15:28
    #38181489
Stratus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Должно работать
...
Рейтинг: 0 / 0
12.03.2013, 15:30
    #38181494
Stratus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
То есть то что мастер студии может сгенить фигню - это факт?
...
Рейтинг: 0 / 0
12.03.2013, 15:33
    #38181500
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Stratus,

да фигню он редко генерит.
просто те кто использует эти мастера- не понимают как результат полученный от мастера должен работать.
...
Рейтинг: 0 / 0
12.03.2013, 15:41
    #38181515
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Смотря что понимать под фигней.
Вот от такого порождения дизайнера
Код: xml
1.
Margin="10,227,367,86"


я просто плачу кровавыми слезами. Это он так выстраивает относительное положение элементов. Псевдоабсолютное позиционирование.
...
Рейтинг: 0 / 0
12.03.2013, 16:06
    #38181570
Stratus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Ну это не критично, в данный момент возможно в конструкторе не указано относительное позиционирование....
меня смущает другое почему заполнение таблицы с клавиатуры не отображается в таблице Detail
...
Рейтинг: 0 / 0
12.03.2013, 16:29
    #38181628
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Stratus,

я понял, в чем проблема.
навеное тебе надо смотреть, как работает dataset объект и твоя xsd схемка.
наверное грид, где то буфферизуют изменения.
...
Рейтинг: 0 / 0
12.03.2013, 20:39
    #38182041
Stratus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Может дело в Биндинге и его настройках?
...
Рейтинг: 0 / 0
26.04.2013, 12:58
    #38241352
Serge73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Для того чтобы работали изменения необходимо иметь observableCollection или bindinglist.

привязка таблицы должна быть к ним через collectionviewsource.

Еще в настройках itemsouce нужно указать propertychange

Еще можно сделать привязку таблицы деталей к свойству itemsouce (или DataContext) мастера а не к общему DataContext, но у вас и по первому варианту должно работать.
...
Рейтинг: 0 / 0
26.04.2013, 13:06
    #38241374
Serge73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Serge73,

у вас вообще все таблицы не имеют связи между собой
По логике все должны быть увязаны с
<Grid DataContext="{StaticResource customerViewSource}">

делается мышкой в настройках itemsouce для каждой таблицы (см. StaticResource)
...
Рейтинг: 0 / 0
22.10.2013, 13:27
    #38436828
megazoid007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Народ скиньте сюда пример или ссылку на простенький пример как связать datatable проинициализованный в коде c# c datagrid но что бы привязка была в XAML, а ?
...
Рейтинг: 0 / 0
22.10.2013, 15:15
    #38437053
Абсолют
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
megazoid007Народ скиньте сюда пример или ссылку на простенький пример как связать datatable проинициализованный в коде c# c datagrid но что бы привязка была в XAML, а ?

DataContext + ItemSource не, не работает?
...
Рейтинг: 0 / 0
22.10.2013, 17:58
    #38437391
megazoid007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Абсолют,
т.е. я так понял классика это в коде написать this.DataContext, а в xaml <datagrid1 itemsourse = " {binding}" />
я правильно понял ?
...
Рейтинг: 0 / 0
22.10.2013, 18:02
    #38437406
Абсолют
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
megazoid007Абсолют,
т.е. я так понял классика это в коде написать this.DataContext, а в xaml <datagrid1 itemsourse = " {binding}" />
я правильно понял ?
Можно так, должно работать.

Только в биндинге нужно указать проперть, к какой биндите, к пример:

Код: c#
1.
<datagrid1 itemsourse = "{Binding Ololo, Mode=TwoWay}" />
...
Рейтинг: 0 / 0
23.10.2013, 02:07
    #38437787
megazoid007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF Неработающий Binding
Абсолют, ну в общих чертах ясно спасибо
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF Неработающий Binding / 25 сообщений из 31, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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