Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Передать несколько значений между окнами. / 24 сообщений из 24, страница 1 из 1
08.02.2016, 18:07
    #39165824
mishanya3624
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
ПРиветствую!
Как реализовать, чтобы 2 разных параметра использовались из первого окна в другом:
Сейчас так сделал, но так не нравится, когда все в одной строке передается, хочется, чтобы каждое значение было в разных переменных и раскидать их по разным lable(Combobox1.Text & Combobox2.Text):
первая форма:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (Combobox2.SelectedItem != null)
            {
                Window2 tb = new Window2(Combobox1.Text + "'  и таблицей:  '" + Combobox2.Text);
                tb.Show();
               
            }
            else
            {
                MessageBox.Show("Выберите таблицу");
            }
        }


вторая форма куда уходит:
Код: c#
1.
2.
3.
4.
5.
6.
     public Window2(string s)
        {
           InitializeComponent();

            Lable1.Content = "Вы работаете с базой:  '" + s + "'";
        }
...
Рейтинг: 0 / 0
08.02.2016, 18:18
    #39165838
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
заходим в google и ищем:
Window
DataContext MVVM WPF ООП
...
Рейтинг: 0 / 0
08.02.2016, 19:03
    #39165896
mishanya3624
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Roman Mejtes,

понял свои ошибки, а именно - все не так!!!:)
лучше использовать сразу тот, или иной фрэймворк, или пока на голом WPF MVVM учиться?
И еще вопрос, MVVM pattern насколько облегчает житие бытие, или это просто еще шаг вперед?
...
Рейтинг: 0 / 0
08.02.2016, 19:48
    #39165943
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
mishanya3624чтобы 2 разных параметра использовались из первого окна в другом:
Я же рекомендовал прочитать главу учебника про параметры метода.

Палларис спрашивал, не издеваешься ли ты, когда спрашиваешь, как передать параметр в метод.

А ты опять и опять грызешь кактус. Это так сложно прочитать первые несколько глав учебника по C#?
...
Рейтинг: 0 / 0
08.02.2016, 19:49
    #39165944
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
mishanya3624, MVVM pattern насколько облегчает житие бытие, или это просто еще шаг вперед?почему ИЛИ? И то и другое.
Но пока ты пишешь mishanya3624
Код: c#
1.
Lable1.Content = "Вы работаете с базой:  '" + s + "'";

MVVM тебе будет только мешать.
...
Рейтинг: 0 / 0
09.02.2016, 00:55
    #39166146
mishanya3624
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Что не так делаю:
Window1.xaml , где хочу видеть textbox ы из MainWindow
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:WpfApplication1"
        Title="Window1" Height="300" Width="300">
    <Window.DataContext>
        <local:MainWindow/>
    </Window.DataContext>
    <Grid>
        <Label Content="{Binding Path=ss}" HorizontalAlignment="Left" Margin="58,33,0,0" VerticalAlignment="Top" />
        <Label Content="{Binding Path=sss}" HorizontalAlignment="Left" Margin="58,86,0,0" VerticalAlignment="Top"/>

    </Grid>
</Window>


Вот сам MainWindow:
Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 WpfApplication1
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public string ss { get; set; }
        public string sss { get; set; }
        public MainWindow()
        {
            InitializeComponent();
            ss = text1.Text;
            sss = text2.Text;
        }
    }
}
...
Рейтинг: 0 / 0
09.02.2016, 01:02
    #39166147
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Один из вариантов- ты можешь передать два параметра через параметры конструктора.

Ну только не спрашивай пожалуйста, что такое параметры и что такое конструктор. Ты это должен знать раньше, чем начать писать любую программу.
...
Рейтинг: 0 / 0
09.02.2016, 01:04
    #39166148
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
mishanya3624
Код: xml
1.
Margin="58,33,0,0"

это тоже плохой стиль. Дизайн формы в WPF создается с помощью панелей компоновки. Абсолютное позиционирование элементов не используется почти никогда.
...
Рейтинг: 0 / 0
09.02.2016, 11:38
    #39166382
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Shocker.Pro,

Margin - это относительное, просто он размещал их через дизайнер форм. Я его в своей VS вообще отключил, только память жрет и толку 0
...
Рейтинг: 0 / 0
09.02.2016, 11:52
    #39166409
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Roman MejtesShocker.Pro,

Margin - это относительное, просто он размещал их через дизайнер форм. Я его в своей VS вообще отключил, только память жрет и толку 0Да, практически, абсолютное - почти что заданы Top и Left, как в WinForms. Ты бы не стал так размещать метки, загнал бы их как минимум в StackPanel, правильно?

Да, зря они дизайнер такому научили, теперь он новичков плохому учит.
Я не отключал дизайнер, поглядываю на результат, но пишу, конечно, XAML.
...
Рейтинг: 0 / 0
09.02.2016, 15:02
    #39166709
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Shocker.Pro,

просто в 99% случаев я в XAML работаю с DictionaryResources в которых находятся шаблоны и стили для в рамках данного файла.
А дизайнер не поддерживает DataTemplate'ы, хотя что мешает загнать в дизайнере это все в ContentPresenter мне не понятно.
+ когда он не нужен, а я хочу поменять размер окна с кодом, часто цеплялся за Splitter дизайнера, но в 2015 сделали возможность его полностью выпилить.
Еще дизайнер может зависать отлично и ресурсы жрет непомерно
...
Рейтинг: 0 / 0
09.02.2016, 15:53
    #39166785
mishanya3624
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
так, :

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
   public partial class Window1 : Window
    {
        public string ss;
        public Window1()
        {
          
            InitializeComponent();
            combo1();
            Combobox2.IsEnabled = false;
            ss = Combobox2.Text;
        }
     }


еще:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 public partial class Window2 : Window
    {
       // public string dd;
        public Window2()
        {
            Window1 w1 = new Window1();
            InitializeComponent();
            
             Lable1.Content = w1.ss;
            
        }
     
        
    }


Ну все же логично!!!!!
должно же передаваться...
Но передается только тогда, когда я в замле Window1 прописываю у комбокса свойство Text="kjgvdfsjkbvglsjd", если я пишу ему TExt = "{Binding Pach=ss}" то значение не прилетает
...
Рейтинг: 0 / 0
09.02.2016, 16:11
    #39166804
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
ерунду написал, чиатй дальше про MVVM и RelayCommand , NavigationService и тд и тп
...
Рейтинг: 0 / 0
09.02.2016, 16:13
    #39166808
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
{Binding} - это MarkupExtension и работает он только из XAML кода, через XAMLReader.
То есть в CodeBehind вы не можете для свойства Text присвоить значение {Binding BlaBlaBla} или любой другой MarkupExtension.
Свойству Text нужно присвоить значение соответствующего этому свойству типа (в данном случае этот тип String).
Для того, чтоб назначить связывание свойста через код, необходимо использовать метод

FrameworkElement.SetBinding(DependencyProperty, Binding);
или через
BindingOperations.SetBinding(DependencyObject, DependencyProperty, Binding)
(так как DependencyObject не имеет метода SetBinding, но может участвовать в связывании)
...
Рейтинг: 0 / 0
09.02.2016, 16:16
    #39166812
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Roman Mejtes,

да ему это рано , ему надо понять концепцию. наверняка одной моделью для 2-х окон можно в его случае обойтись, просто навигацию правильно сделать
...
Рейтинг: 0 / 0
09.02.2016, 17:41
    #39166914
mishanya3624
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
голова моя бедовая :((
...
Рейтинг: 0 / 0
09.02.2016, 21:59
    #39167138
mishanya3624
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Код: c#
1.
2.
3.
4.
5.
   public void Button_Click(object sender, RoutedEventArgs e)
        {

            NavigationService.Navigate(new Uri("/Window2.xaml?UserString=" + Combobox1.Text, UriKind.Relative));
        }



Ошибка 1 Для нестатического поля, метода или свойства "System.Windows.Navigation.NavigationService.Navigate(System.Uri)" требуется ссылка на объект G:\Git\Projects\p_record\p_record\Window1.xaml.cs 93 13 p_record

хелпуйте
...
Рейтинг: 0 / 0
09.02.2016, 22:17
    #39167142
mishanya3624
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Код: c#
1.
2.
3.
4.
5.
   public  void Button_Click(object sender, RoutedEventArgs e)
        {
            NavigationService nav = NavigationService.GetNavigationService(this);
            nav.Navigate(new Uri("/Window2.xaml?UserString=" + Combobox1.Text, UriKind.Relative));
        }



так при событии при нажатии на кнопку ругается, что {"Ссылка на объект не указывает на экземпляр объекта."}
...
Рейтинг: 0 / 0
11.02.2016, 09:32
    #39168254
@k@DElpher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Roman Mejtes,

Было бы интересно глянуть. Да и вообще на XAML Guidelines, находил пару интересных документов на эту тему. Особенно интересно, когда приложение модульное, и соответственно много проектов (у нас основные стили прям в App.xaml подключаются, но некоторая путаница и дублирование уже ощущается).
...
Рейтинг: 0 / 0
11.02.2016, 13:05
    #39168483
mishanya3624
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
еще 1 вопрос профана,
если у меня в классе 2 конструктора с одинаковыми именами - это не есть гуд?
...
Рейтинг: 0 / 0
11.02.2016, 13:07
    #39168488
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
mishanya3624,

вам бы учебник по C# прочесть....
...
Рейтинг: 0 / 0
11.02.2016, 17:05
    #39168805
mishanya3624
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Shocker.Pro,
уже:)
...
Рейтинг: 0 / 0
11.02.2016, 17:16
    #39168823
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Быстро ))
И что там про перегрузку конструкторов? ))
...
Рейтинг: 0 / 0
11.02.2016, 17:38
    #39168844
mishanya3624
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать несколько значений между окнами.
Shocker.Pro,
"уже" в смысле читаю:)
так можно делать, главное, чтобы отличалась сигнатура конструктора.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Передать несколько значений между окнами. / 24 сообщений из 24, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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