web-dev-qa-db-fra.com

Ajouter par programme un contrôle à Grid RowDefition dans WPF 4.5

J'ai parcouru ce site (et bien d'autres) en essayant de comprendre ce qui se passe et pourquoi cela ne fonctionne pas. J'utilise VS2012 et j'ai créé une application WPF C # (cible .NET 4.5). Je suis nouveau sur WPF, après avoir passé de nombreuses années à coder des applications Windows Forms, mais j'ai décidé de franchir le pas, et j'aime XAML jusqu'à présent.

En fin de compte, je veux: 1) Supprimer un contrôle utilisateur dans une ligne particulière (RowDefinition) dans ma grille 2) Placer un autre contrôle utilisateur dans cette ligne particulière

Cependant, je n'arrive pas à placer même un simple bouton de contrôle. Ce que je veux faire, c'est placer un bouton dans la rangée 4 (3 avec un index nul). Voici mon XAML:

<Window
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
xmlns:Custom="http://schemas.Microsoft.com/winfx/2006/xaml/presentation/ribbon"
x:Class="TestApp2_WindowsClient.MainWindow"
Title="Test App 2" Height="700" Width="1000" MinHeight="700" MinWidth="1000" MaxHeight="700" MaxWidth="1000" FontSize="12" FontFamily="Segoe UI Semibold">
<Grid VerticalAlignment="Top" Name="gridMain">
    <Grid.RowDefinitions>
        <RowDefinition Height="60"/>
        <RowDefinition Height="152"/>
        <RowDefinition Height="240"/>
        <RowDefinition Height="60"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0"/>
    </Grid.ColumnDefinitions>

<StackPanel Name="stackButtons1" HorizontalAlignment="Left" Height="50" Margin="4,4,-310,4" Grid.Row="0" VerticalAlignment="Top" Width="300" Orientation="Horizontal" >
        <Button Content="Show Bookings" Height="24" Margin="4,0,0,0" Click="Button_Click_1" />
        <Button Content="Show Radio Buttons" Height="24" Margin="4,0,0,0" Click="Button_Click_2" />
    </StackPanel>

</Grid>
</Window>

Le code du bouton (premier bouton dans le panneau de pile) est:

Button MyControl = new Button();
MyControl.Content = "Test Button!";

Grid.SetRow(MyControl, 3); 
Grid.SetColumn(MyControl, 0); 
gridMain.Children.Add(MyControl); 

Je peux voir (dans ma montre) que la valeur du nombre gridMain.Children augmente chaque fois que je clique sur le premier bouton, mais rien n'apparaît à l'écran.

C'est probablement quelque chose de vraiment idiot, mais quelques heures de recherche et d'essai d'une pile de code différent n'ont pas aidé.

Merci d'avance!

17
Dominik
<ColumnDefinition Width="0"/>

Vous pourriez peut-être voir le bouton si vous augmentiez la largeur.

24
Kendall Frey