Dynamiczne dodawanie przycisków do aplikacji

0

Chcę, żeby po kliknięciu tworzył mi się nowy obiekt klasy button a jego nazwa zapisywała się w pliku ustawień tak abym mógł po uruchomieniu odczytać tą nazwę i ustawić. Wie ktoś jak to zrobić?

Mikolaj_1234 napisał(a):

po kliknięciu tego przycisku w głównym oknie dodawał mi się do widoku, chodzi o ta nazwę która się na nim wyświetla, nazwałem plik Ustewienia.settings (Jak się doda nowy element można tam wybrać plik ustawień). Chodzi o to żeby użytkownik dodał do widoku nowy przycisk, podał jego nazwę, klikną przycisk zapisz, Content tego przycisku zapisze się w pliku ustawień a po ponownym uruchomieniu aplikacji dodał do widoku nowy przycisk z Contentem który wcześniej podał użytkownik i go zapisał.

0
Mikolaj_1234 napisał(a):

Chce żeby po kliknięciu tworzył mi się nowy obiekt klasy button a jego nazwa zapisywała się w pliku ustawień tak abym mógł po uruchomieniu odczytać tą nazwę i ustawić. Wie ktoś jak to zrobić?

  • Chce żeby po kliknięciu - po kliknięciu gdzie?
  • tworzył mi się nowy obiekt klasy button - chodzi o stworzenie instancji, czy dodanie go do widoku?
  • jego nazwa zapisywała się w pliku - a nazwa buttona to o co chodzi konkretnie? o jego label, ten który się pokazuje na przycisku? Czy o atrybut .Name?
  • się w pliku ustawień czyli konkretnie w którym pliku?
  • tak abym mógł po uruchomieniu odczytać tą nazwę i ustawić czyli chcesz podczas działania programu zmienić wyświetlany tekst na przycisku poprzez edycje pliku? Czy chodzi o pobranie tego tekstu tylko przy uruchomieniu?
0

po kliknięciu tego przycisku w głównym oknie dodawał mi się do widoku, chodzi o ta nazwę która się na nim wyświetla, nazwałem plik Ustewienia.settings (Jak się doda nowy element można tam wybrać plik ustawień). Chodzi o to żeby użytkownik dodał do widoku nowy przycisk, podał jego nazwę, klikną przycisk zapisz, Content tego przycisku zapisze się w pliku ustawień a po ponownym uruchomieniu aplikacji dodał do widoku nowy przycisk z Contentem który wcześniej podał użytkownik i go zapisał.

0
Mikolaj_1234 napisał(a):

po kliknięciu tego przycisku w głównym oknie dodawał mi się do widoku, chodzi o ta nazwę która się na nim wyświetla, nazwałem plik Ustewienia.settings (Jak się doda nowy element można tam wybrać plik ustawień). Chodzi o to żeby użytkownik dodał do widoku nowy przycisk, podał jego nazwę, klikną przycisk zapisz, Content tego przycisku zapisze się w pliku ustawień a po ponownym uruchomieniu aplikacji dodał do widoku nowy przycisk z Contentem który wcześniej podał użytkownik i go zapisał.

Czyli chcesz podczas działania programu pozwolić na dodawanie przycisków do aplikacji, które zapiszą się w jakimś pliku?

Czy chcesz, Ty, jako programista tej aplikacji je dodać?

0

dokładnie tak

To masz pomysł jak tego dokonać?

3

O to chodzi? Starałem się napisać kod żeby był jak najprostszy.

<Window x:Class="WpfPractice.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfPractice"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
    <Grid>
        <StackPanel x:Name="Panel">
            <Button x:Name="Add" Content="Dodaj" Click="Add_Click"/>
        </StackPanel>
    </Grid>
</Window>

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfPractice
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private List<string> buttons = new List<string>();

        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            buttons = GetSetting("buttons").Split(';').ToList();
            foreach (var item in buttons)
            {
                Panel.Children.Insert(0, new Button() { Content = item});
            }
        }

        private void Add_Click(object sender, RoutedEventArgs e)
        {
            string newValue = new Random().Next(0, 100).ToString();
            buttons.Add(newValue);
            Panel.Children.Insert(0, new Button() { Content = newValue });
            SetSetting("buttons", string.Join(";", buttons));
        }

        public string GetSetting(string key)
        {
            return ConfigurationManager.AppSettings[key]!;
        }

        public void SetSetting(string key, string value)
        {
            Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            configuration.AppSettings.Settings[key].Value = value;
            configuration.Save(ConfigurationSaveMode.Full, true);
            ConfigurationManager.RefreshSection("appSettings");
        }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1