Операция WPF после заполнения лагерей - PullRequest
0 голосов
/ 28 июня 2018

Я довольно новичок в c #, особенно для приложений с интерфейсом. Я посмотрел, например, или руководство по WPF, но они слишком просты. Вот что я хотел бы сделать:

1) кнопка для просмотра каталога и выбора файлов;

2) a Listbox и a textBox будут заполнены с использованием информации по именам файлов, выбранным ранее;

3) переименовывайте эти файлы с помощью веб-информации, только когда заполнены Listbox и textbox.

Пункты 1) и 2) выполнены: я написал необходимый код внутри события нажатия кнопки. Я думал написать код для пункта 3) внутри MainWindow, но эти строки кода выполняются до того, как я могу выбрать файлы, тогда еще нет никаких данных.

Простым решением может быть вставка остальной части кода в событие нажатия кнопки, но я думаю, что это ужасно. На данный момент я не могу понять, что писать в ГЛАВНОЙ в приложении WPF. Код:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void webLink_Click(object sender, RoutedEventArgs e)
    {
        System.Diagnostics.Process.Start("http://www.battlecraft.it/");
    }

    private void loader_Click(object sender, RoutedEventArgs e)
    {
        OpenFileDialog ofd = new OpenFileDialog();
        ofd.Multiselect = true;
        ofd.ShowDialog();
        listBox1.Items.Clear();
        string[] files = ofd.FileNames;
        string[] filenames = new string[files.Length];
        for (int i=0; i<files.Length; i++)
        {
            filenames[i] = System.IO.Path.GetFileNameWithoutExtension(files[i]);
            listBox1.Items.Add(filenames[i]);
        }
        if (listBox1.Items.Count != 0)
        {
            string SeEp = Regex.Match(filenames[0], @"\d+\w\d+").Value;
            string[] str = Regex.Split(filenames[0], @"\d\d\w+\d\d");
            string titolo = str[0].Replace(".", " ");

            MatchCollection m = Regex.Matches(SeEp, @"\d\d");
            titleBox.Text = titolo;
            seasonBox.Text = "stagione " + m[0].Value;
            int episode = int.Parse(m[1].Value);
        }
    }
}

1 Ответ

0 голосов
/ 29 июня 2018

Я только что изучил концепцию Binding, и это должно решить мою проблему. Привязка свойства IsEnabled элемента startBtn к длине listbox1 и listbox2 должна отключить кнопку, когда они пусты, и включить ее в противном случае.

Я создал простую привязку только между startBtn и listbox1, как показано ниже:

<Button x:Name="startBtn" Content="Rinomina" HorizontalAlignment="Left" Margin="255,79,0,0" VerticalAlignment="Top" Width="75" Height="36" IsEnabled="{Binding ElementName=listBox1, Path=Text.Length}"/>

и работает без добавления какой-либо строки кода в c #. Я должен использовать MultiBinding, но я не могу понять синтаксис для передачи 2 текстовых полей. Это также возможно без записи какого-либо кода на C #?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...