Bonjour,

si un contrôle est déclaré dans le XAML, comme est "Button2" dans cet exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<Window x:Class="TestDynamicControl.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
 
        <Button x:Name="Button1" Grid.Column="0" Click="Button1_Click"/>
        <Button x:Name="Button2" Grid.Column="1"/>
    </Grid>
</Window>
Est-il possible de le remplacer ou supprimer dynamiquement ?

Ce code ne fonctionnant pas pour le remplacer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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 TestDynamicControl
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
 
        private void Button1_Click(object sender, RoutedEventArgs e)
        {
            Button newButton = new Button();
            newButton.Content = "Test";
            Button2 = newButton;
        }
    }
}
Ni celui-ci pour le supprimer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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 TestDynamicControl
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
 
        private void Button1_Click(object sender, RoutedEventArgs e)
        {
            Button2 = null;
        }
    }
}
En effet la fenêtre présente toujours le même bouton, même s'il est mis à "null".
Faut-il dire à la fenêtre de se rafraichir ?


L'objectif réel étant qu'un contrôle différent soit affiché en fonction des données reçues par l'application.


Merci.