Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 1 / 0
Регистрация: 06.12.2020
Сообщений: 66

Как автоматически менять название кнопки в XAML?

14.05.2024, 15:45. Показов 3796. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть кнопка сделанная в XAML на DataGrid, задумал менять название, оказалось это дело не то же самое что в виндовcформ, там все просто а как в WPF XAML?

XML
1
2
3
4
5
6
7
                <DataGridTemplateColumn Header="Buy/Sel" Width="70">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button x:Name ="btnOperation"  Click="Demonsracia" Content="Buy"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

вот как такое провернуть с кнопкой созданной в WPF XAML?
C#
1
2
3
4
5
6
7
8
9
                    
                    if (Button.Content = "НЕ Ok")
                    { 
                        Button.Content = "Ok"; 
                    }
                    else
                    { 
                       Button.Content = "НЕ Ok"
                    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2024, 15:45
Ответы с готовыми решениями:

Как автоматически менять AssemblyFileVersion
Доброе время суток. Что то я совсем забыл куда копать что бы при компиляции или сборке проекта, менялась значение AssemblyFileVersion...

Если CheckBox отмечен, то по нажатию кнопки текст копируется в название формы, иначе в название кнопки
Разработать Windows Forms приложение, содержащее TextBox, CheckBox и кнопку. Если CheckBox отмечен, то по нажатию кнопки текст копируется в...

Как автоматически менять значение слайдера?
Мне нужно чтобы мой слайдер автоматически шел вместе с песней которую я подгружаю. То есть условно говоря есть значение слайдера до какого...

53
0 / 1 / 0
Регистрация: 06.12.2020
Сообщений: 66
22.05.2024, 18:25  [ТС]
Студворк — интернет-сервис помощи студентам
я категорически извиняюсь
нету опыта в гитхабе
я понял почему так, есть веткаV2

ссылка наветку не делается
или так если
https://github.com/MiSeKor/QUI... e/ветка-v2
о так работает
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
22.05.2024, 19:28
newest newbie,
XML
1
2
3
4
5
6
 <TextBlock Grid.Row="0" HorizontalAlignment="Left" Width="120"
            DataContext="{Binding SelectedTool}" Text="{Binding Name}"/>
 <TextBlock Grid.Row="0" HorizontalAlignment="Left" Width="120"
            DataContext="{Binding SelectedTool}" Text="{Binding operation}"/>
 <TextBlock Grid.Row="0" HorizontalAlignment="Left" Width="120"
            DataContext="{Binding SelectedTool}" Text="{Binding SecurityCode}"/>
Я же вам писал... У вас DataContext задан для окна, на уровне окна доступно все. А вы для TextBlock задаете другой контекст конечно это не будет работать. DataContext для TextBlock и т.п задавать не нужно.
Так же для SelectedItem у вас свойство SelectedTool.
Так и задавайте привязку правильно.
XML
1
2
<TextBlock Grid.Row="0" HorizontalAlignment="Left" Width="120"  Text="{Binding SelectedTool.Name}"/>
  <TextBlock Grid.Row="0" HorizontalAlignment="Left" Width="120"  Text="{Binding SelectedTool.operation}"/>
Тут operation успешно выводит значение enum.
Но Name никогда не отображается. Если посмотреть под отладчиком.

Видим что Name всегда равен null, то есть и отображать нечего.
Если вывести что то другое то


Итог:
1) я вам про DataContext в первом же сообщение написал
2) В первую очередь смотрите если такие данные вообще в отладчике. А только после этого задавайтесь вопросом почему их нет в view.
1
0 / 1 / 0
Регистрация: 06.12.2020
Сообщений: 66
23.05.2024, 02:52  [ТС]
Цитата Сообщение от xellan24rus Посмотреть сообщение
Тут operation успешно выводит значение enum.
Но Name никогда не отображается. Если посмотреть под отладчиком.
рискну предположить, что у вас нет сервера(терминала) куда подключиться самому квик, чтобы потом там инициализировать ТУУЛ
поэтому у Вас Name, ClassCode и прочая инфа = Null, эта инфа которая должна браться из терминала

как приложение вообще включилось без сервера?
сервер брокера то есть
ну например учебный терминал квик жуниор + скрипт луа на нем включен должен быть
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
23.05.2024, 05:37
newest newbie, я отключил инициализацию сервера чтобы запустить приложение
1
0 / 1 / 0
Регистрация: 06.12.2020
Сообщений: 66
23.05.2024, 18:22  [ТС]
вот совсем как по учебнику и не работает
XML
1
2
3
4
5
6
7
8
        <TextBlock>
            <Run>В DataDrid выбрано - Name:</Run> 
            <Run Text="{Binding SelectedTool.Name}"></Run>
            <Run> operation:</Run>
            <Run Text="{Binding SelectedTool.operation}"></Run>
            <Run>SecurityCode:</Run>
            <Run Text="{Binding SelectedTool.SecurityCode}"></Run>
        </TextBlock>
а так работает
XML
1
2
3
4
5
6
7
8
        <StackPanel Grid.Row="0" Orientation="Vertical">
            <TextBlock Grid.Row="0" HorizontalAlignment="Left" Width="120"
                        Text="{Binding SelectedTool.Name}"/>
            <TextBlock Grid.Row="0" HorizontalAlignment="Left" Width="120"
                        Text="{Binding SelectedTool.operation}"/>
            <TextBlock Grid.Row="0" HorizontalAlignment="Left" Width="120"
                        Text="{Binding SelectedTool.SecurityCode}"/>
        </StackPanel>
Добавлено через 5 часов 18 минут
подправил
XML
1
2
3
4
5
6
7
8
9
10
            <StackPanel Grid.Row="0" Orientation="Horizontal">
                <Button FontSize="14" FontWeight="Bold" HorizontalAlignment="Left" Content="AddTool" Height="24" Width="72" Click="Button_Click_AddTool" RenderTransformOrigin="0.292,1.877"/>
                <TextBox Name="txBoxAddTool" Margin="5,0,50,0" FontSize="14" FontWeight="Bold" Width="120"></TextBox>
                <TextBlock FontSize="14" FontWeight="Bold" Grid.Row="0" HorizontalAlignment="Left" TextAlignment="Right" Width="100"
                           Text="{Binding SelectedTool.Name}"/>
                <TextBlock Margin="10,0,0,0"  FontSize="14" FontWeight="Bold" Grid.Row="0" HorizontalAlignment="Left" Width="25"
                           Text="{Binding SelectedTool.operation}"/>
                <TextBlock Margin="10,0,0,0" FontSize="14" FontWeight="Bold" Grid.Row="0" HorizontalAlignment="Left" Width="50"
                           Text="{Binding SelectedTool.SecurityCode}"/>
            </StackPanel>
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
23.05.2024, 19:36
newest newbie, вообще ни разу.
C#
1
2
 public string SecurityCode { get; private set; }
 public string Name { get; private set; }
Какое исключение дается?
Привязка типа TwoWay или OneWayToSource не может работать с доступным только для чтения свойством "Name" типа "Tool"."

Почему оно дается? У вас есть свойство SelectedTool, но значения могут задаваться только в классе Tool, то есть таблица пытается задать значение, но не может. Ведь там стоит запрет.
Ваша проблема в том вы ленитесь изучить базу не самого wpf, а в том что вы не знаете базу c#. Это элементарные ошибки. Wpf работает на уровне классов если сравнить.
Вот у вас свойство SelectedTool вы потом обращаетесь к Name, так в c# все тоже самое идет. И не стоит думать на уровне Gui, думайте на уровне классов

Добавлено через 16 минут
Цитата Сообщение от newest newbie Посмотреть сообщение
а так работает
В целом конечно странно, но если сделать свойства не приватными, то все работает.
1
0 / 1 / 0
Регистрация: 06.12.2020
Сообщений: 66
24.05.2024, 02:47  [ТС]
Цитата Сообщение от xellan24rus Посмотреть сообщение
Какое исключение дается?
в строке вывода такой хаос что я ни чего не смог заметить, буду смотреть снова, внимательно.

и вот назрел вопрос, а зачем таблице задавать значение если нужно его прочитать из SelectedTool.Name и результат вставить в текст блок?
попробую что будет без приват
и в других столбах параметры тоже ридонли тру, но все работает, такие как LastPrise, Positions, StpOrdBuy или не в ридонли дело

Добавлено через 3 минуты
Цитата Сообщение от xellan24rus Посмотреть сообщение
ленитесь изучить базу не самого wpf, а в том что вы не знаете базу c#
на практике изучаю, "на ходу и в прыжке"
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
24.05.2024, 10:00
newest newbie,
А теперь решение на ваш вопрос.
Допустим у нас есть ситуация, здесь сеттер приватный,
C#
1
2
3
4
5
6
7
8
9
  public class Data : ViewModelBase
  {
      public Data()
      {
          Name = Random.Shared.Next(0, 100).ToString();
          Description = Random.Shared.Next(0, 100).ToString();
      }
      public string Name { get; private set; }
      public string re Description { get; private set; }
Используется как
XML
1
2
3
<TextBlock>
       <Run Text="{Binding SelectedData.Description}"></Run>
   </TextBlock>
При выборе Item сразу дается ошибка

Тут написано что проблема в привязке, ведь у свойства привязанного для SelectedItem есть OnPropertyChanged чтобы во View были изменения для комбобоксов, об это ранее писал. Следовательно свойство SelectedData не может выполнить уведомление об изменение для view.
Получается проблема найдена. Чтобы ее устранить нужно установить правильную привязку. Источник > объект
OneWay
XML
1
2
3
4
5
6
  <TextBlock>
      <Run>Description:</Run>
      <Run Text="{Binding SelectedData.Description, Mode=OneWay}"></Run>
      <Run>Name:</Run>
      <Run Text="{Binding SelectedData.Name, Mode=OneWay}"></Run>
  </TextBlock>
Теперь все работает.

Но к примеру в WPF привязка к свойству
C#
1
public readonly string Description
может быть немного сложной, и такое мало кто использует. Ни в одном примере такого не видел.
Если капнуть глубже то Vm не должна иметь бизнес логики, а view это подписчик vm. Значит vm уведомляет об своих изменениях view. А бизнес логика и в целом логика идет в отдельном слое. Следовательно всякие манипуляции с данными не делаются в vm, и всякие readonly свойства и работа с данными идет в другое слое, а логике которого vm ничего не известно.

Цитата Сообщение от newest newbie Посмотреть сообщение
на практике изучаю, "на ходу и в прыжке"
На практике самообучения идет поиск каждой ошибке и поиск может занять и неделю и месяц.
Лучше хотя бы слабо знать теорию чтобы что то делать. К примеру вы плохо знакомы с привязками, с vm. И поэтому процесс изучения крайне долгий. А готовые решения или подсказки учат не всегда сразу, ведь если разберетесь в чем то сами, то эти знания будут усвоены в процессе тестов, чтения статей.
Сейчас на ваши вопросы есть все ответы в статьях что я указывал ранее. Освоив эту базу, у вас даже таких вопросов бы не появилось. Статьи там минут на 30 чтения, реализация примеров максимум на час. Получается если вникнуть в это возьмем время с запасом огромным, то за день вы могли бы с этим самостоятельно разобраться.
Поэтому я и написал что вы ленитесь изучать базу. Потому что все готовые ответы в статьях-документации. Если их понять не можете, то от готовых ответов-решений толку не будет, так как вы не разбиравшись это использовали и представления не имеете что это делает. А если нет представления, то нет знаний чтобы осознанно что то использовать.
Вообще не мне давать советы, но мой совет изучите базу)
1
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,758
Записей в блоге: 4
24.05.2024, 10:16
newest newbie, Разберитесь и повторите полностью пример вот отсюда - Паттерн MVVM. Не поймёте с первого раза - пробуйте ещё и ещё пока не придёт осознание этого паттерна и как работают слои приложения. Приложение там очень простое, при желании можете его расширить до работы с БД, какой-то логикой и т.д... Все слои делайте в разных сборках, чтобы лучше понять взаимосвязь слоёв и кто за что отвечает. И вот тогда уже всё вышесказанное xellan24rus для вас станет понятно.
2
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
24.05.2024, 10:31
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
для вас станет понятно.
Я стараюсь максимально просто объяснить. Паттерн этот вроде понял.
В целом я описывал это:
mvvm представляет собой прослойку между моделью (Model) и представлением (View). ViewModel содержит логику представления и управляет данными, предоставляя их для отображения в представлении.

Но новичку слету эту терминологию не понять. Поэтому я посоветовал учить базу, базу даже не mvvm, а то что является базой wpf: binding, vm, INotifyPropertyChanged. Без этих знаний и понимания что может vm, до изучения паттерна mvm это как до луны пешком.
1
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,758
Записей в блоге: 4
24.05.2024, 10:35
Цитата Сообщение от xellan24rus Посмотреть сообщение
Без этих знаний и понимания что может vm, до изучения паттерна mvm это как до луны пешком
В том примере всё рассказывается, я сам по нему учился
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
24.05.2024, 10:47
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
В том примере всё рассказывается, я сам по нему учился
Тогда все хорошо) В целом там пример простого приложения =)
Но в рамках вопроса по коду были использованы все различные привязки такие как OneWay, TwoWay. И свойства inpc для Selected... Поэтому кроме этого примера, все таки базой я считаю основу для wpf, без mvvm можно делать хоть что, а вот без основы знаний ничего не сделать. Сейчас у автора не mvvm но большие проблемы с основой знаний. Поэтому советую изучить именно это, чтобы делать приложения которые работают с заданной логикой. А про mvvm писал к слову, для того чтобы дать понять что в vm не изменяемые свойства не будут работать так как хочет автор. И что задание readonly свойств не так хорошо дружит с view, и что такие свойства идут в слое с логикой.
0
0 / 1 / 0
Регистрация: 06.12.2020
Сообщений: 66
24.05.2024, 13:14  [ТС]
займусь, спасибо
0
0 / 1 / 0
Регистрация: 06.12.2020
Сообщений: 66
26.05.2024, 18:19  [ТС]
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Я показал пример из официальной справки. Чем не устраивает?
разобрался, смог прикрутить, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2024, 18:19

Как автоматически менять одно цифровое значение на другое
необходимо ввести цифровые значения в таблицу екселя и подсчитать сумму. Особенность - есть ключ, например числовые оценки, поставленные...

Как менять название файла?
Добрый день! знает ли кто, как менять название загружаемого файла? к примеру: 4fg54.doc поменять на 1.doc, а следующий на 2.doc и т.п.

Как по клику на ссылке менять ее название?
Как по клику на ссылке менять ее название? например, 'Иди сюда' поменять на 'Иди туда' в ссылке вида &lt;a href='#'...

Как создать слайд-шоу которое будет автоматически менять фото?
Изначально код был написан программой Adobe Muse, но проекта уже нет, но он есть на хостинге. Нужен набросок коды, что бы потом найти этот...

Как автоматически менять цвет графика на диаграмме в зависимости от данных ячейки
Помогите составить макрос, чтобы автоматически менять цвет графиков на диаграмме в зависимости от данных ячеек.


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

Или воспользуйтесь поиском по форуму:
54
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
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 и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru