Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
28 / 16 / 2
Регистрация: 09.05.2020
Сообщений: 149

Текстблок Collapsed, не хочет коллапсед

16.02.2022, 12:03. Показов 2136. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте.

А что может быть, метод срабатывает а текстблок не исчезает? Ошибок синтаксических нет.

XML
1
 <TextBlock x:Name="TxtBlock1"  FontSize="24" Text="Hello"/>
C#
1
2
3
4
5
6
7
8
 public void Hidden()
        {
 
            this.TxtBlock1.Visibility = Visibility.Collapsed;
 
           
        
        }
ни hidden, ни collapsed. Ноль реакции.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2022, 12:03
Ответы с готовыми решениями:

Make dropdown to collapsed
&lt;nav id=&quot;opacity&quot; class=&quot;text-center navbar navbar-expand-lg navbar-light navbar-toggleable navbar-expand-md&quot;&gt; &lt;a...

Различие Visibility.Hidden и Visibility.Collapsed
Сразу прошу прощения за глупый вопрос,но в интернете сколько не искал,так до конца и не понял В чем различие Visibility.Hidden и...


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

Или воспользуйтесь поиском по форуму:
40
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
16.02.2022, 15:17
Студворк — интернет-сервис помощи студентам
Nguen, угу. Вам нужно открыть App.xaml и найти строку с StartupUri и поменять её на Startup. Сделали?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
16.02.2022, 15:20
Nguen, если же вам нужно "добраться" до Окна создаваемого в StartupUri, то вы это не сможете сделать в событии Startup, поскольку StartupUri срабатывает после этого события.
В момент поднятия Startup в приложении нет ещё ни одного Окна.

Добавлено через 58 секунд
Цитата Сообщение от limeniye Посмотреть сообщение
и найти строку с StartupUri и поменять её на Startup. Сделали?
Не поменять, а удалить.
Startup и так у него уже задан поскольку метод Application_Startup срабатывает.
0
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
16.02.2022, 15:21
Элд Хасп, думаю стоит показать пример. Мне кажется человеку неясно о чём речь.
0
28 / 16 / 2
Регистрация: 09.05.2020
Сообщений: 149
16.02.2022, 15:22  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Я же дал ответ выше в пост #14.
с аргументов все ок.

а без аргумента или с несовпадающим окно не выходит.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
16.02.2022, 15:45
Лучший ответ Сообщение было отмечено Nguen как решение

Решение

Цитата Сообщение от limeniye Посмотреть сообщение
думаю стоит показать пример.
С использованием Контекста Данных или локатора это решается "на раз", но ТС, наверное, принципиально избегает использовать нормальными методы работы в XAML, и работает с UI элементами на Шарпе.
А для таких "танцев с бубном" нужно гораздо больше знаний и опыта, чем есть у ТС.

Цитата Сообщение от Nguen Посмотреть сообщение
а без аргумента или с несовпадающим окно не выходит.
Покажу пример нормальной реализации:
Локатор:
C#
1
2
3
4
5
public class Locator : BaseInpc
{
    private bool _isNoSu;
    public boll IsNoSu { get => _isNoSu; set => Set(ref _isNoSu, value); }
}
В ресурсах App:
XML
5
6
7
    <Application.Resources>
        <local:Locator x:Key="locator"/>
    <Application.Resources>
Startup:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            Locator locator = (Locator) Resources["locator"];
            locator.IsNoSu=true;
 
            foreach (string s in e.Args)
            {
                MessageBox.Show(string.Format("Arg: {0}", s));
 
 
                if (s == "su")
                {
                    locator.IsNoSu=false;
                }
            }
        }
В Xaml Окна (инициализацию конвертера не показываю):
XML
1
2
        <TextBlock x:Name="TxtBlock1"  FontSize="24" Text="Hello"
                   Visibility="{Binding IsNoSu, Source={StaticResuorce locator}, Converter={StaticResuorce booleanToVisibilityConverter}}"/>
Добавлено через 3 минуты
Отрицание Su используется из-за дефолтного конвертера BooleanToVisibilityConverter.
Если будете использовать мою реализацию, то там можно задать отрицание в самом конвертере: 4. BooleanToVisibilityConverter и BooleanToVisibilityHiddenConverter - bool в видимость.
2
28 / 16 / 2
Регистрация: 09.05.2020
Сообщений: 149
16.02.2022, 17:15  [ТС]
Элд Хасп, хорошо, если уж совсем уйти в mvvm дебри.


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void Application_Startup(object sender, StartupEventArgs e)
        {
           
 
            foreach (string s in e.Args)
            {
                MessageBox.Show(string.Format("Arg: {0}", s));
 
 
                if (s == "su")
                {
                    // добраться через локатор до свойства или метода в  MainWindowViewModel???
                    // И исполнять его там.
                }
            }
        }
вопрос в комментарии.

Добавлено через 29 минут
Вот этот Application_Startup он что в другом потоке? Из него ничего не выполняется.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
16.02.2022, 17:16
Цитата Сообщение от Nguen Посмотреть сообщение
// добраться через локатор до свойства или метода в  MainWindowViewModel???
                    // И исполнять его там.
Для этого MainWindowViewModel должна инициализировать и связываться с Окном в обработчике Startup.
Примерно по аналогии с локатором в моём примере.
Одно из свойств локатора будет ваша VM.
И DataContext Окна надо будет привязать к этому свойству.

Цитата Сообщение от Nguen Посмотреть сообщение
если уж совсем уйти в mvvm дебри.
Это не дебри, а азы работы с WPF.
0
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
16.02.2022, 17:18
Вам нужно открыть App.xaml и найти строку с StartupUri и поменять её на Startup. Сделали?
У Вас там что-то типо StartupUri="\MainWindow.xaml" а нужно изменить на Startup="Application_Startup"
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
16.02.2022, 17:18
Цитата Сообщение от Nguen Посмотреть сообщение
Вот этот Application_Startup он что в другом потоке? Из него ничего не выполняется.
Из него всё выполняется.
Но он выполняется ПЕРВЫМ в приложении (после конструктора App).
И, на момент его вызова, ещё ни какие типы и их экземпляры не инициализированы.
0
28 / 16 / 2
Регистрация: 09.05.2020
Сообщений: 149
16.02.2022, 17:41  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
И, на момент его вызова, ещё ни какие типы и их экземпляры не инициализированы.
я это подозревал и сделал задержку исполнения метода в VM.

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
23
24
25
26
27
private void Application_Startup(object sender, StartupEventArgs e)
        {
 
            foreach (string s in e.Args)
            {
                MessageBox.Show(s);
 
               
                    
            }
 
            foreach (string s in e.Args)
            {
                MessageBox.Show(string.Format("Arg: {0}", s));
 
                if (s == "su")
                {
                   
                      MainWindowViewModel mainwindowviewmodel = new MainWindowViewModel();
 
                    mainwindowviewmodel.AnyTestMethod();
 
                }
 
               
            }
        }




VM

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        // test
        public void AnyTestMethod()
        {
 
            Task.Delay(4000).ContinueWith(t => test()); // срабатывает когда уже окно давно запущено
 
        }
 
 
        // test
        private void test()
        {
 
            if (buttons_IsVisible == false)
                buttons_IsVisible = true;
 
            else if (buttons_IsVisible == true)
                buttons_IsVisible = false;
 
 
        }
Но блин, если тот же test() "дернуть кнопкой из GUI. Все ОК.
0
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
16.02.2022, 18:20
Нугеныч застрял?

нашел десяток примеров по методу Application_Startup, во всех, как результат, показ MessageBox и все.
Для самого приложения бесполезная штука. т.к. приложение еще не создано. Некуда передавать данные.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
16.02.2022, 18:31
Цитата Сообщение от Nguen Посмотреть сообщение
я это подозревал и сделал задержку исполнения метода в VM.
Вы чё серьёзно?!
Вы же не один день (и год, наверное) работаете на Шарпе.

Вы создали новый экземпляр VM, чё-то с ним сделали и потом выкинули в мусор.
Вы совсем не понимаете разницы между типом, объектом и экземпляром?

Добавлено через 1 минуту
Nguen, я вам дал ПОЛНОСТЬЮ рабочий код с локатором.
Вы его поняли?
Неужели вы не можете туда сами самостоятельно добавить ещё одно свойство для вашей VM?
0
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
16.02.2022, 18:44
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Nguen, я вам дал ПОЛНОСТЬЮ рабочий код с локатором.
Вы его поняли?
Неужели вы не можете туда сами самостоятельно добавить ещё одно свойство для вашей VM?
Я попробовал ваш код.

'Object reference not set to an instance of an object.'
при запуске приложения в строчке

C#
1
locator.IsNoSu=false;
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
16.02.2022, 18:48
Цитата Сообщение от Berendom Посмотреть сообщение
нашел десяток примеров по методу Application_Startup, во всех, как результат, показ MessageBox и все.
Значит искали не то что нужно.
Вы (вместе с Nguen) придумали как вы ХОТИТЕ реализовать и ищете ответ именно на это.
А ваша придумка в корне не верна и дела не в WPF или Startup, а в том, что вы даже не знаете чем отличается тип и экземпляр (об объекте я уже не говорю).
Это самые азы, начала Шарпа.

Вот примеры (несколько из многих) как используется Startup (кроме моего локатора в этой теме):
И, конечно, для показа обоих окон надо добавить в App обработчик Startup
Создание приложения "Штатное Расписание" в паттерне MVVM
MVVM DataGrid CheckBox Command
Прослушивать изменения в Model из ViewModel
Как получить размер (Height,Width)
0
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
16.02.2022, 18:49
Nguen, Элд Хасп, все работает,

нарушение правила, течения кода слева направо, сверху вниз.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
16.02.2022, 18:49
Цитата Сообщение от Berendom Посмотреть сообщение
при запуске приложения в строчке
А в ресурсы App записали локатор?
0
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
16.02.2022, 18:50
Nguen, ставь #25 как решение. Мы балбесы.

мораль. Сначала нужно все инициализировать, потом присваивать свойству значение. true/false.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
16.02.2022, 18:52
Цитата Сообщение от Berendom Посмотреть сообщение
ставь #25 как решение.
У вас получилось?
0
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
16.02.2022, 18:57
Цитата Сообщение от Элд Хасп Посмотреть сообщение
У вас получилось?
все работает Нугеныч мой сокурсник, все сдует, после. Просто locator все еще для меня эфемерная вещь.

Добавлено через 3 минуты
но видимость кнопок у нас на style и дататриггере. Все пучком. Загвоздка была в нарушении правила.

нарушение правила, течения кода слева направо, сверху вниз.

XML
1
2
3
4
5
6
7
8
9
 <Button.Style>
                                <Style BasedOn="{StaticResource Button}" TargetType="{x:Type Button}">
                                    <Setter Property="Visibility" Value="Hidden" />
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Button_IsVisible}" Value="true">
                                            <Setter Property="Visibility" Value="Visible" />
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
16.02.2022, 19:03
Цитата Сообщение от Berendom Посмотреть сообщение
Просто locator все еще для меня эфемерная вещь.
Передача данных между Окнами, между VM, Шина Сообщений, Локатор
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru