web-dev-qa-db-ja.com

プログラムでWPF 4.5のグリッドRowDefitionにコントロールを追加する

私は何が起こっているのか、なぜこれが機能しないのかを理解するために、このサイト(および他の多くのサイト)を調べてきました。私はVS2012を実行していて、WPF C#アプリ(ターゲット.NET 4.5)を作成しました。私はWPFを初めて使用し、Windowsフォームアプリのコーディングに何年も費やしてきましたが、思い切って採用することを決定し、今のところXAMLを好みます。

最終的に私は次のことを行います:1)グリッド内の特定の行(RowDefinition)のユーザーコントロールを削除します2)その特定の行に別のユーザーコントロールを配置します

しかし、単純なボタンコントロールでも配置できないようです。私がやりたいことは、行4にボタンを配置することです(インデックスが0の3)。ここに私の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>

ボタンのコード(スタックパネルの最初のボタン)は次のとおりです。

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

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

最初のボタンをクリックするたびにgridMain.Childrenのカウント値が増加することを(時計で)確認できますが、画面には何も表示されません。

おそらくばかげているかもしれませんが、さまざまなコードのスタックを数時間検索して試しても役に立たなかったのです。

前もって感謝します!

17
Dominik
<ColumnDefinition Width="0"/>

幅を広げるとボタンが見えるかもしれません。

24
Kendall Frey