Форум программистов, компьютерный форум CyberForum.ru

Вывод данных в TextBlock - Windows Phone

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
liar_84
 Аватар для liar_84
10 / 10 / 0
Регистрация: 08.11.2010
Сообщений: 79
02.10.2013, 23:35     Вывод данных в TextBlock #1
Здравствуйте! Надеюсь на вашу помощь, поскольку сам новичок в этом деле!
У меня есть код - генератор случайных чисел. Есть скелет на XAML. Вопрос, как мне вывести информацию случайного числа в TextBlock или другой блок подходящий для этого? Если можно пример, или киньте ссылку с описанием или на водку, что искать в msdn!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2013, 23:35     Вывод данных в TextBlock
Посмотрите здесь:

Windows Phone TextBlock
Windows Phone Как поставить textbox и textblock вплотную?
Windows Phone Обрезание текста в TextBlock
Сделать так, чтоб при нажатии кнопки показывался textblock на 3 секунды и потом уезжал Windows Phone
Windows Phone Сделать так, чтоб при нажатии кнопки показывался textblock на 3 секунды и потом уезжал
Запись текста из текстового файла в TextBlock Windows Phone
Сохранение текста из TextBlock в .txt файл в память телефона Windows Phone
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
krupa
 Аватар для krupa
106 / 106 / 27
Регистрация: 13.12.2010
Сообщений: 407
03.10.2013, 10:21     Вывод данных в TextBlock #2
Цитата Сообщение от liar_84 Посмотреть сообщение
Здравствуйте! Надеюсь на вашу помощь, поскольку сам новичок в этом деле!
У меня есть код - генератор случайных чисел. Есть скелет на XAML. Вопрос, как мне вывести информацию случайного числа в TextBlock или другой блок подходящий для этого? Если можно пример, или киньте ссылку с описанием или на водку, что искать в msdn!
используете MVVM ?

если всё происходит в Code-Behind, в XAML своему TextBlock задаете имя - x:Name="myTextBlock"

в Code-Behind
this.meTextBlock.Text= [ ваш текст ]
liar_84
 Аватар для liar_84
10 / 10 / 0
Регистрация: 08.11.2010
Сообщений: 79
04.10.2013, 18:53  [ТС]     Вывод данных в TextBlock #3
Цитата Сообщение от krupa Посмотреть сообщение
используете MVVM ?

если всё происходит в Code-Behind, в XAML своему TextBlock задаете имя - x:Name="myTextBlock"

в Code-Behind
this.meTextBlock.Text= [ ваш текст ]
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
namespace Умножение_в_уме
{
    
    public partial class Page1 : PhoneApplicationPage
    {
        class Rand
        {
            public int rand1, rand2, parm_min, parm_max;
            public Rand(int p_m, int p_max)//параметизированный конструктор
            {
                parm_min = p_m;
                parm_max = p_max;
            }
            public void RanDom1()
            {
                Random num = new Random();//объект генератора случайных чисел
                rand1 = num.Next(parm_min, parm_max);
                Console.WriteLine(rand1);
            }
            public void RanDom2()
            {
                Thread.Sleep(1000);//Прерывание потока на две секунды, чтобы добиться разности значений
                Random num = new Random();//объект генератора случайных чисел
                rand2 = num.Next(parm_min, parm_max);
                this.OneFactor.Text = rand1;
                //Console.WriteLine(rand2);
                //Console.Read();
            }
        }
        class DemRand
        {
            static void Main(string[] args)
            {
                Rand parm = new Rand(1, 11);//объект для задания значений конструктора
                parm.RanDom1();
                parm.RanDom2();
            }
        }
}
}
XML
1
<TextBlock x:Name="OneFactor"   Grid.Column="0" Foreground="Aqua" FontSize="60"></TextBlock>
Сделал как написано, но видно что-то не указал в Code-Behind и ссылка на имя OneFactor подсвечивается красным! Подскажи, что я забыл указать!?
krupa
 Аватар для krupa
106 / 106 / 27
Регистрация: 13.12.2010
Сообщений: 407
04.10.2013, 19:00     Вывод данных в TextBlock #4
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
public partial class Page1 : PhoneApplicationPage
    {
       public Page1()
       {
           this.InitializeComponent();
           Rand r = new Rand();
         /* Идут ваши операции и функции*/
           this.OneFactor.Text = [то что получили].ToString();
       }
    }
 
    class Rand
        {
            public int rand1, rand2, parm_min, parm_max;
            public Rand(int p_m, int p_max)//параметизированный конструктор
            {
                parm_min = p_m;
                parm_max = p_max;
            }
            public void RanDom1()
            {
                Random num = new Random();//объект генератора случайных чисел
                rand1 = num.Next(parm_min, parm_max);
                Console.WriteLine(rand1);
            }
            public void RanDom2()
            {
                Thread.Sleep(1000);//Прерывание потока на две секунды, чтобы добиться разности значений
                Random num = new Random();//объект генератора случайных чисел
                rand2 = num.Next(parm_min, parm_max);
                this.OneFactor.Text = rand1;
                //Console.WriteLine(rand2);
                //Console.Read();
            }
        }
я могу ошибаться, но у вас 2 вложенных класса и внутри вложенного класа нет видимости переменной this.OneFactor.
делай это или в контрукторе или создайте ещё кнопку и по её клику выводите данные в текстблок
liar_84
 Аватар для liar_84
10 / 10 / 0
Регистрация: 08.11.2010
Сообщений: 79
04.11.2013, 23:03  [ТС]     Вывод данных в TextBlock #5
Подскажи, почему у меня код работает только в конструкторе?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public partial class Page1 : PhoneApplicationPage
    {
        public int rand1, rand2, Proizved, parm_min, parm_max;
        public Page1()
        {
            parm_max = 20;
            parm_min = 2;
            this.InitializeComponent();
            Random num = new Random();//объект Random
            rand1 = num.Next(parm_min, parm_max);//возвращаем случайное число в заданном интервале
            Thread.Sleep(2000);//задержка
            Random num2 = new Random();
            rand2 = num2.Next(parm_min, parm_max);
            this.OneFactor.Text = rand1.ToString();//переводим случайное число в строковое значение и передаем по ссылке в textblock
            this.TwoFactor.Text = rand2.ToString();
        }
}
а когда я вынес в метод вот так
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
public partial class Page1 : PhoneApplicationPage
    {
        public int rand1, rand2, Proizved, parm_min, parm_max;
        public Page1()
        {
            //parm_max = 20;
            //parm_min = 2;
            //this.InitializeComponent();
            //Random num = new Random();//объект Random
            //rand1 = num.Next(parm_min, parm_max);//возвращаем случайное число в заданном интервале
            //Thread.Sleep(2000);//задержка
            //Random num2 = new Random();
            //rand2 = num2.Next(parm_min, parm_max);
            //this.OneFactor.Text = rand1.ToString();//переводим случайное число в строковое значение и передаем по ссылке в textblock
            //this.TwoFactor.Text = rand2.ToString();
        }
        public void Rand()
        {
            parm_max = 20;
            parm_min = 2;
            this.InitializeComponent();
            Random num = new Random();
            rand1 = num.Next(parm_min, parm_max);
            Thread.Sleep(2000);
            Random num2 = new Random();
            rand2 = num2.Next(parm_min, parm_max);
            this.OneFactor.Text = rand1.ToString();
            this.TwoFactor.Text = rand2.ToString();
        }
то у меня при эмуляции ничего не выводиться... хотя в конструкторе работает. А выношу в метод для того чтобы по клику на кнопку "обновить" у меня запускался метод случайных чисел и обновлялись значения! А дублировать код в событие... как то это не правильно!
krupa
 Аватар для krupa
106 / 106 / 27
Регистрация: 13.12.2010
Сообщений: 407
07.11.2013, 15:17     Вывод данных в TextBlock #6
скинь XAML и Code-Behind.
strevg
1 / 1 / 0
Регистрация: 24.06.2013
Сообщений: 57
18.11.2013, 23:12     Вывод данных в TextBlock #7
Попробуй удалить this.InitializeComponent();
liar_84
 Аватар для liar_84
10 / 10 / 0
Регистрация: 08.11.2010
Сообщений: 79
18.11.2013, 23:45  [ТС]     Вывод данных в TextBlock #8
Цитата Сообщение от strevg Посмотреть сообщение
Попробуй удалить this.InitializeComponent();
При удалении тогда this.InitializeComponent(); все работает, но компоненты не запускаются, т.е. голый скелет XAML.
strevg
1 / 1 / 0
Регистрация: 24.06.2013
Сообщений: 57
19.11.2013, 01:01     Вывод данных в TextBlock #9
Кинь полный код и код XAML. Может быть там что
liar_84
 Аватар для liar_84
10 / 10 / 0
Регистрация: 08.11.2010
Сообщений: 79
20.11.2013, 16:13  [ТС]     Вывод данных в TextBlock #10
Вот сам проект!!!
Вложения
Тип файла: rar Умножениевуме.rar (435.3 Кб, 4 просмотров)
strevg
1 / 1 / 0
Регистрация: 24.06.2013
Сообщений: 57
20.11.2013, 23:53     Вывод данных в TextBlock #11
Ваш проект у меня не открылся(Может быть он для WP8). Вот сделал свой. Все работает.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
 
namespace random
{
    public partial class MainPage : PhoneApplicationPage
    {
        int rand1, rand2, par_min=2, par_max=20;        
        // Конструктор
        public MainPage()
        {
            InitializeComponent();
        }
 
        private void Click_rand(object sender, RoutedEventArgs e)
        {
            Random num = new Random();
            rand1 = num.Next(par_min, par_max);
            textBlock1.Text = Convert.ToString(rand1);
            rand2 = num.Next(par_min, par_max);
            textBlock2.Text = Convert.ToString(rand2);
        }
    }
}
Это код для С#
А вот для xaml
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<phone:PhoneApplicationPage 
    x:Class="random.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">
 
    <!--LayoutRoot представляет корневую сетку, где размещается все содержимое страницы-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
 
        <!--TitlePanel содержит имя приложения и заголовок страницы-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" Text="МОЕ ПРИЛОЖЕНИЕ" Style="{StaticResource PhoneTextNormalStyle}"/>
            <TextBlock x:Name="PageTitle" Text="Умножение в уме" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
            
        </StackPanel>
 
        <!--ContentPanel — поместите здесь дополнительное содержимое-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <TextBlock FontSize="50" Height="81" HorizontalAlignment="Left" Margin="0,6,0,0" Name="textBlock1"  VerticalAlignment="Top" Width="468" />
            <TextBlock FontSize="50" Height="81" HorizontalAlignment="Left" Margin="0,93,0,0" Name="textBlock2"  VerticalAlignment="Top" Width="468" />
            <Button Content="Случайные числа" Height="72" HorizontalAlignment="Left" Margin="0,180,0,0" Name="button1" VerticalAlignment="Top" Width="450" Click="Click_rand"/>
        </Grid>
    </Grid>
 
    <!--Пример кода, иллюстрирующий использование ApplicationBar-->
    <!--<phone:PhoneApplicationPage.ApplicationBar>
        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Кнопка 1"/>
            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Кнопка 2"/>
            <shell:ApplicationBar.MenuItems>
                <shell:ApplicationBarMenuItem Text="Элемент меню 1"/>
                <shell:ApplicationBarMenuItem Text="Элемент меню 2"/>
            </shell:ApplicationBar.MenuItems>
        </shell:ApplicationBar>
    </phone:PhoneApplicationPage.ApplicationBar>-->
 
</phone:PhoneApplicationPage>
Думаю что там все понятно))
liar_84
 Аватар для liar_84
10 / 10 / 0
Регистрация: 08.11.2010
Сообщений: 79
22.11.2013, 22:42  [ТС]     Вывод данных в TextBlock #12
Цитата Сообщение от strevg Посмотреть сообщение
Ваш проект у меня не открылся(Может быть он для WP8). Вот сделал свой. Все работает.
Да проект для WP8!
Это не совсем то что мне нужно! Так и я делал все работает! Вопрос в том чтобы не вставлять лишний код в обработчик событий. Т.е. код генерации случайного числа вынести в метод а в обработчике событий вызывать метод! Т.е. сделать с ООП! Вот так!
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using System.Threading;
 
namespace Умножение_в_уме
{
    
    public partial class Page1 : PhoneApplicationPage
    {
        int rand1, rand2, ans, parm_min, parm_max, reh;
        public Page1()
        {
            InitializeComponent();
            Random num = new Random();
            rand1 = num.Next(2, 20);
            Thread.Sleep(2000);
            Random num2 = new Random();
            rand2 = num2.Next(2, 20);
            OneFactor.Text = rand1.ToString();
            TwoFactor.Text = rand2.ToString();
        }
        public void Rand()
        {
            parm_max = 20;
            parm_min = 2;
            InitializeComponent();
            Random num = new Random();
            rand1 = num.Next(parm_min, parm_max);
            Thread.Sleep(2000);
            Random num2 = new Random();
            rand2 = num2.Next(parm_min, parm_max);
            OneFactor.Text = rand1.ToString();
            TwoFactor.Text = rand2.ToString();
        }
        public void Rehenie()
        {
            reh = rand1 * rand2;
            Answer.Text = reh.ToString();
        }
        private void CheckOne(object sender, RoutedEventArgs e)
        {
        }
        private void CheckTwo(object sender, RoutedEventArgs e)
        {
        }
        private void CheckThree(object sender, RoutedEventArgs e)
        {
        }
        private void settings(object sender, System.Windows.Input.GestureEventArgs e)
        {
            //NavigationService.Navigate(new Uri("/Settings.xaml", UriKind.Relative));
        }
 
        private void rehenie(object sender, RoutedEventArgs e)
        {
            Page1 otvet = new Page1();
            otvet.Rehenie();
        }
        private void refresh(object sender, RoutedEventArgs e)
        {
            Page1 reff = new Page1();
            reff.Rand();
        }
    }
}
И XAMl к коду!
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
<Grid x:Name="LayoutRoot" Background="Transparent" ShowGridLines="True">
        <phone:Pivot Title="Считай в уме">
            <phone:PivotItem Header="Умножение"/>
            <phone:PivotItem Header="Тренировка" Margin="10,10,14,18">
                <Grid>
                    <Grid HorizontalAlignment="Left" Height="117" Margin="47,204,0,0" VerticalAlignment="Top" Width="367">
                        <Grid.RowDefinitions>
                            <RowDefinition></RowDefinition>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition Width="40"/>
                            <ColumnDefinition/>
                            <ColumnDefinition Width="50"/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <TextBlock x:Name="OneFactor"   Grid.Column="0" Foreground="Aqua" FontSize="60"></TextBlock>
                        <TextBlock Grid.Column="1" FontSize="60">*</TextBlock>
                        <TextBlock x:Name="TwoFactor" Grid.Column="2" FontSize="60"></TextBlock>
                        <TextBlock Grid.Column="3" FontSize="60">=</TextBlock> 
                        <TextBlock x:Name="Answer" Grid.Column="4" FontSize="60"></TextBlock>
                    </Grid>
                    <Grid HorizontalAlignment="Left" Height="61" Margin="155,357,0,0" VerticalAlignment="Top" Width="147">
                        <Button Content="Решение" Click="rehenie" HorizontalAlignment="Left" Margin="-114,-8,0,0" VerticalAlignment="Top" Height="69" Width="147"/>
                        <Button Content="Обновить" Click="refresh" Margin="56,-8,-72,0"></Button>
                    </Grid>
                </Grid>
                
            </phone:PivotItem>
        </phone:Pivot>
    </Grid>
</phone:PhoneApplicationPage>
Но при развертывании проекта в эмуляторе, на события refresh и rehenie не реагирует!
В консольном проекте C# все работает таким образом! А здесь видимо что-то не так делаю! Все таки первый проект , да и сишарпер я еще пока не очень!
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
04.12.2013, 20:50     Вывод данных в TextBlock #13
Цитата Сообщение от liar_84 Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
private void rehenie(object sender, RoutedEventArgs e)
{
    Page1 otvet = new Page1();
    otvet.Rehenie();
}
private void refresh(object sender, RoutedEventArgs e)
{
    Page1 reff = new Page1();
    reff.Rand();
}
А дело ли не в том, что вы создаете новый объект типа Page1, а потом в нем пытаетесь сделать
C#
1
2
3
4
5
public void Rehenie()
{
    reh = rand1 * rand2;
    Answer.Text = reh.ToString();
}
?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2013, 21:46     Вывод данных в TextBlock
Еще ссылки по теме:

Windows Phone Вывод записей из базы данных
Windows Phone Можно ли используя элемент DataPicker, при выборе даты, выводить также в TextBlock наименование дня недели?
Добавление массива TextBlock на ContentPanel Windows Phone

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
liar_84
 Аватар для liar_84
10 / 10 / 0
Регистрация: 08.11.2010
Сообщений: 79
04.12.2013, 21:46  [ТС]     Вывод данных в TextBlock #14
Да, именно в этом, я это уже понял, спасибо zulkis за ответ!
Yandex
Объявления
04.12.2013, 21:46     Вывод данных в TextBlock
Ответ Создать тему
Опции темы

Текущее время: 07:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru