2017-02-17 8 views
0

私のアプリケーションにボタンが1つ追加されているとします。 これを押すと、最初のボタンのすぐ隣に別のボタンが表示されます。 また、新しいボタンは「新しいボタンを追加」ボタンになるはずです。UWPアプリケーションにボタンをプログラムで追加する

どうすればよいですか?

私は、エディタで「これを左に置いてください」と言うことができるので、RelativePanelを作成していました。 しかし、C#コードでそれを行う方法を見つけることができません。

+1

RelativePanelクラス(例:RelativePanel.SetLeftOf(buttonA、buttonB))でC#の配置を設定することができます – ctron

答えて

1

ctron's commentに従うことができ、コード内のプロパティ値を設定することで可能です。しかし、あなたは、二重回に1つのボタン、2番目の新しい作成したものが重複しますをクリックすると、

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    Button newButton = new Button { Content = "CreatedBtn" }; 
    newButton.Click += Button_Click; 
    RelativePanel.SetLeftOf(newButton,sender); 
    myPanel.Children.Add(newButton); 
} 

これは正常に動作します:

<RelativePanel x:Name="myPanel" Margin="100"> 
    <Button Content="StartBtn" Click="Button_Click"/> 
</RelativePanel> 

と背後にあるコードで:XAML - サンプルは次のようになります。最初のクリックから作成されたもの。それが望ましい動作でない場合は、別の方法で行う必要があります。この場合、ボタンのリストが必要です。このいくつかのより多くのスタイリングが必要ですが、基本的な考え方を示すべき

<ListView x:Name="myList"> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <ItemsStackPanel Orientation="Horizontal" ScrollViewer.HorizontalScrollMode="Enabled" ScrollViewer.VerticalScrollMode="Disabled"/> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Button Content="{Binding}" Click="ListButton_Click"/> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
    <x:String>StartBtn</x:String> 
</ListView> 
private void ListButton_Click(object sender, RoutedEventArgs e) 
{ 
    int index = myList.Items.IndexOf((e.OriginalSource as FrameworkElement).DataContext); 
    myList.Items.Insert(index, $"Btn {myList.Items.Count}"); 
} 

:私はそのための水平のListViewを使用しました。

+0

これで、新しく生成されたボタンの動作をどのように指定できますか?私は他のボタンを追加したくないので、何か他のことをする必要があります。 –

+0

@DanielKrennこれを行うにはいくつかの方法があります。作成されたボタンごとに新しいイベントハンドラを作成することができる相対オプションを使用すると非常に簡単です。 listメソッドを使用すると、アイテムのクラスを定義したり、適切なデリゲートをそこに配置したり、コマンドパターンを使用したり、アイテム作成時に何をすべきかを定義することができます。あなたが成功しない場合は、自分自身でそれを試してみてください。 – Romasz

関連する問題