0

надо вывести полученное значение в окно. можно ли в xaml передать переменную для Text:

<TextBox Name="Length_txt" Width="150" Height="24"
         VerticalAlignment="Center"
         HorizontalAlignment="Right"
         Margin="10"
         Grid.Row="1"
         Text="{Binding Answers}" <<!--нет контекста-->
         BorderThickness="0,0,0,0"/>
public MainWindow(){
    InitializeComponent();
    DataContext = new Answerlist();
}

public class Answerlist{ private static string[] answers = File.ReadAllLines("res/latin.txt");

public static string Answers { get; set; } = $&quot;{answers.Length}&quot;;

public static string getRandomAnswer(){
    return answers[new Random().Next(answers.Length)];
}

}

ошибки нет и прога фунтициклирует, но значение не выводится...

Nowhere Man
  • 15,995
  • 33
  • 19
  • 29
  • 2
    DataContext = new MainViewModel(); в конструкторе окна (название зависит от типа проекта), далее делаете класс public class MainViewModel { public string Text {get;set;} = "Привет мир!"; }, ну и остается в XAML написать {Binding Text}. Все, вот у вас переменная, которая задает текст. Добро пожаловать в мир привязок как говорится) Единственно, если будете менять при запущенном приложении, то нужен еще INotifyPropertyChanged. Ну а если "тупо" хотите, невзирая на все рекомендации и прочее, то просто Length_txt.Text = "Привет мир!"; Но потом не удивляйтесь каше в проекте. – EvgeniyZ Mar 05 '23 at 16:28
  • Вопрос из разряда "не умею искать примитивную информацию, помогите!". Да без проблем, я поискал: https://metanit.com/sharp/wpf/11.php – aepot Mar 05 '23 at 18:50
  • EvgeniyZ - не очень понятно "в конструкторе окна" какого окна. aepot - инфу принял к изучению. – damp.ali Mar 05 '23 at 20:37
  • вопрос отредактировал в свете новой информации – damp.ali Mar 05 '23 at 21:39
  • 1
    Почему у меня тогда все выводится? Прям взял ваш код, всунул в чистый проект, получил нужный результат. И да, отучайтесь от статики, она зло. Если у вас в проекте везде статика, то значит что-то пошло не так. Ну и да, зачем вам два свойства? Сделали одно public string[] Answers { get; set; } = File.ReadAllLines("res/latin.txt");, а дальше с ним работайте везде, где надо, включая привязки Text="{Binding Answers.Length, Mode=OneWay}" (OneWay потому, что свойство длины не имеет set, из-за чего мы не можем ему задать значение, включая привязку). – EvgeniyZ Mar 05 '23 at 22:43
  • EvgeniyZ - спасибо всё получилось. по поводу статики - убрал и создал объект в основном классе. вроде всё фунтициклирует. тему можно закрыть. – damp.ali Mar 06 '23 at 06:20

0 Answers0