powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF Неработающий Binding
31 сообщений из 31, показаны все 2 страниц
WPF Неработающий Binding
    #38170318
Stratus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги,

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

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

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

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

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

а в этой куче кода мало, кто захочет разбираться.
я загрузил твой пример, но там не работает, даже так, как ты описываешь.
думаю другие также посмотрели, твой пример, который не работает и забили.
...
Рейтинг: 0 / 0
WPF Неработающий Binding
    #38181434
Stratus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно, делал в 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
WPF Неработающий Binding
    #38181443
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stratus,

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

Код: c#
1.
<datagrid1 itemsourse = "{Binding Ololo, Mode=TwoWay}" />
...
Рейтинг: 0 / 0
WPF Неработающий Binding
    #38437787
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Абсолют, ну в общих чертах ясно спасибо
...
Рейтинг: 0 / 0
WPF Неработающий Binding
    #38437796
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
megazoid007,

было б за что)
...
Рейтинг: 0 / 0
WPF Неработающий Binding
    #38438000
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При выше описанном мной способе привязки при смене текущей item в datagride собственно реально в CurentItem не меняется в BindingListCollectionView т.е.:
Код: c#
1.
view = (BindingListCollectionView)CollectionViewSource.GetDefaultView(this.DataContext);   


потому что при (view.CurrentItem as DataRowView).Delete() удаляется всегда верхняя срока
что это может быть ?
...
Рейтинг: 0 / 0
WPF Неработающий Binding
    #38438116
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо было установить IsSynchronizedWithCurrentItem в true
...
Рейтинг: 0 / 0
WPF Неработающий Binding
    #38442502
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Абсолют, а можно ли привязать полностью на xaml т.е. что бы даже в процедурном коде ни писать this.datacontext = dataTable.
Т.е. я не врубаюсь как в xaml добраться то таблицы которая лежит в классе окна в процедурном коде:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
namespace firstWPF
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        string connStr = @"Data Source=PC_LOCAL;Initial Catalog=tmp;Integrated Security=True";
        SqlConnection con;
        SqlDataAdapter da;
        DataTable dt;
        public MainWindow()
        {
            InitializeComponent();
            con = new SqlConnection(connStr);
            da = new SqlDataAdapter("select * from import", con);
            dt = new DataTable("import");
            da.Fill(dt);
        }
    }
}  


????
...
Рейтинг: 0 / 0
WPF Неработающий Binding
    #38442603
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иначе как смысл от WPF если нельзя отделить работу программиста от дизайнера
...
Рейтинг: 0 / 0
WPF Неработающий Binding
    #38445128
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
megazoid007Иначе как смысл от WPF если нельзя отделить работу программиста от дизайнера

Код: c#
1.
<.... DataContext="{Binding DataTable}">



?
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF Неработающий Binding
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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