powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Не обновляются данные при биндинге
6 сообщений из 6, страница 1 из 1
Не обновляются данные при биндинге
    #39051143
Vladimir2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал проект WPF, в котором есть главное окно, есть страница, размещенная на нем. В действующем проекте будет несколько страниц, на которые идут ссылки с главного окна - для удобства проектирования - каждая страница за свой раздел отвечает (что-то вроде анкеты), но в целом они все должны иметь доступ к модели данных myClass, т.е. должны передаваться на страницы данные, биндиться на элементах управления (которые на страницах) и автоматически через биндинг должны обновляться редактируемые данные в модели. Ниже указан код и приложен весь проект (VS10, FW4.0). Вопрос такой - при запуске проекта оба поля (и в окне и на странице) инициализируются значением "123", но почему по кнопке не изменятся значение на "456" и как это побороть? Кстати, если отладчиком пройтись - показывает, что значение изменилось, но визуально этого нет.
App.xaml.cs:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
using System;
using System.Windows;

namespace WpfTestBinding
{
    public partial class App : Application
    {
        public static myClass _myClassTest = new myClass();

        public static myClass myClassTest
        {
            get
            {
                return _myClassTest;
            }
            set
            {
                _myClassTest = value;
            }
        }
    }
}


MainWindow.xaml.cs:
Код: 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.
using System;
using System.ComponentModel;
using System.Windows;

namespace WpfTestBinding
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            this.DataContext = App.myClassTest;
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            App.myClassTest.myText = "456";
        }
    }

    public class myClass
    {
        public string myText { get; set; }
    }
}


MainWindow.xaml:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<Window x:Class="WpfTestBinding.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50" />
            <RowDefinition Height="50" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <TextBox Text="{Binding Path=myText, Mode=TwoWay}" Width="200" />
        <Frame Grid.Row="1" Source="PageTest.xaml" Margin="0"></Frame>
        <Button Content="Button" Grid.Row="2" Height="23" Name="button1" Width="100" Click="button1_Click" />
    </Grid>
</Window>


PageTest.xaml.cs:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.ComponentModel;

namespace WpfTestBinding
{
    public partial class PageTest : Page
    {
        public PageTest()
        {
            InitializeComponent();

            this.DataContext = App.myClassTest;

            App.myClassTest.myText = "123";
        }
    }
}


PageTest.xaml:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<Page x:Class="WpfTestBinding.PageTest"
      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="PageTest">

    <Grid>
        <TextBox Text="{Binding Path=myText, Mode=TwoWay}" Height="42" Name="textBox1" Width="276" />
    </Grid>
</Page>
...
Рейтинг: 0 / 0
Не обновляются данные при биндинге
    #39051149
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
INotifyPropertyChanged
кстати для статических свойств в 4.0 не работает.
...
Рейтинг: 0 / 0
Не обновляются данные при биндинге
    #39051229
Vladimir2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman MejtesINotifyPropertyChanged
кстати для статических свойств в 4.0 не работает.
Да, я и с ним также делал - результат ноль.
...
Рейтинг: 0 / 0
Не обновляются данные при биндинге
    #39051235
Vladimir2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Какие варианты выхода из ситуации?
2. Я применил контрол "Page", но если не считать варианта с пользовательским контролом (UserControl) - как еще можно разделить громоздкий код XAML главного окна (т.к. планируется использовать несколько страниц (Page) с суммарно большим кол-вом контроллов) ?
...
Рейтинг: 0 / 0
Не обновляются данные при биндинге
    #39051297
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir20081. Какие варианты выхода из ситуации?
2. Я применил контрол "Page", но если не считать варианта с пользовательским контролом (UserControl) - как еще можно разделить громоздкий код XAML главного окна (т.к. планируется использовать несколько страниц (Page) с суммарно большим кол-вом контроллов) ?ну решается очень просто.
в модели представления оберните статическое свойство обычным, так как в модели представления INotifyPropertyChanged уже определен (я полагаю), можно будет обновить значение во View
...
Рейтинг: 0 / 0
Не обновляются данные при биндинге
    #39051331
Vladimir2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesможно будет обновить значение во View
не очень понятно как - можно пример?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Не обновляются данные при биндинге
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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