Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2014, 06:48   #1
todesengel
 
Регистрация: 03.03.2014
Сообщений: 7
По умолчанию не обновляется связанный TextBox

доброе утро всем. есть вот такой код:
Код:
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Data;
using System.Collections;
class mydata
{
    public int myfield { get; set; }
}
class main
{
    static mydata mycarrier = new mydata { };
    static void act(object s, EventArgs a)
    {
        mycarrier.myfield = 9;
    }
    [STAThread]public static void Main()
    {
        var p = new StackPanel { };
        var b = new TextBox { };
        var t = new Button { Content = "ACT" };
        var w = new Window { Content = p, DataContext = mycarrier };
        t.Click += act;
        b.SetBinding(TextBox.TextProperty, "myfield");
        p.Children.Add(b);
        p.Children.Add(t);
        mycarrier.myfield = 6;
        w.ShowDialog();
    }
}

TextBox связан с mycarrier.myfield и в принципе отлично считывает из него значение при старте, но вот в процессе работы формы уже нет. теоретически при нажании ACT значение должно менятся, но этого не происходит.
есть конечно возможность вылавливать объект Binding и делать для него updatetarget, но это не подходит в моем случае. и можно было бы уже отступить и смириться если бы не вот такой случай:
Код:
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Data;
using System.Collections;
class main
{
    static Window mycarrier = new Window { };
    static void act(object s, EventArgs a)
    {
        mycarrier.Width = 9;
    }
    [STAThread]public static void Main()
    {
        var p = new StackPanel { };
        var b = new TextBox { };
        var t = new Button { Content = "ACT" };
        var w = new Window { Content = p, DataContext = mycarrier };
        t.Click += act;
        b.SetBinding(TextBox.TextProperty, "Width");
        p.Children.Add(b);
        p.Children.Add(t);
        mycarrier.Width = 6;
        w.ShowDialog();
    }
}
достаточно TextBox связать не с самодельным классом, а взять любой из WPF, и все обновляется. как быть? я хочу сделать такой же класс, что-бы обновлялось!
todesengel вне форума Ответить с цитированием
Старый 03.03.2014, 09:40   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx
eval вне форума Ответить с цитированием
Старый 03.03.2014, 10:52   #3
todesengel
 
Регистрация: 03.03.2014
Сообщений: 7
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
очень похоже, что это именно, то, что мне нужно, но как это применить именно в моем примере? можете предложить макимально простой код?
todesengel вне форума Ответить с цитированием
Старый 03.03.2014, 11:56   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

по ссылке пример есть
eval вне форума Ответить с цитированием
Старый 03.03.2014, 12:40   #5
todesengel
 
Регистрация: 03.03.2014
Сообщений: 7
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
по ссылке пример есть
ну в принципе разобрался, не очень конечно красиво, но работает.
спасибо большое!
todesengel вне форума Ответить с цитированием
Старый 03.03.2014, 12:58   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

чего не красивого? или вы думаете что Width обновляет по щучьему велению?
eval вне форума Ответить с цитированием
Старый 04.03.2014, 12:31   #7
todesengel
 
Регистрация: 03.03.2014
Сообщений: 7
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
чего не красивого? или вы думаете что Width обновляет по щучьему велению?
ну вообще-то так и думал...
думал приверно вот так пишется:
Код:
public int Width{set;get;}
todesengel вне форума Ответить с цитированием
Старый 04.03.2014, 13:15   #8
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
думал приверно вот так пишется
Было бы слишком просто) Щучье веленье либо через propertychanged, либо через
dependencyproperty
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 05.03.2014, 14:41   #9
todesengel
 
Регистрация: 03.03.2014
Сообщений: 7
По умолчанию

опять ведь у меня подобная проблема, но теперь с DataGrid, при нажатии ACT в LIST элемент добавляется, но в DataGrid не появляется:
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Data;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Input;
class line
{
public int d1 { set; get; }
}
class main
{
static void press(object s, EventArgs a)
{
data.Add(new line { d1 = 66 });
}
static List<line> data = new List<line> { };
[STAThread]public static void Main()
{
data.Add(new line { d1 = 0 });
data.Add(new line { d1 = 1 });
data.Add(new line { d1 = 2 });
var p = new StackPanel { };
var g = new DataGrid { ItemsSource = data };
var b = new Button { Content = "ACT" };
var w = new Window { Content = p };
p.Children.Add(g);
p.Children.Add(b);
b.Click += press;
w.ShowDialog();
}
}
todesengel вне форума Ответить с цитированием
Старый 05.03.2014, 17:47   #10
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Освойте Binding наконец уже, без него в WPF делать нечего.
http://msdn.microsoft.com/ru-ru/libr...v=vs.110).aspx

И вот это еще на закуску:
http://msdn.microsoft.com/ru-ru/libr...v=vs.110).aspx
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не обновляется DataGridView megabax C# (си шарп) 1 25.05.2013 18:19
Не обновляется Grid! MeDveD-3A9l C/C++ Базы данных 1 21.01.2013 20:45
Внести данные из Textbox Form2 в TextBox Form1 uralshans Microsoft Office Excel 1 07.01.2013 17:15
не обновляется DataGridView Kukurudza C# (си шарп) 0 11.03.2012 12:10
Dr. Web 5.0 не обновляется... Smiley Безопасность, Шифрование 9 24.05.2009 15:11