2017-02-17 2 views
0

내 앱에 다른 버튼을 추가하는 버튼이 하나 있다고 가정합니다. 누를 경우 첫 번째 버튼 옆에 다른 버튼이 나타납니다. 또한 새 단추가 "새 단추 추가"단추가되어야합니다.프로그래밍 방식으로 UWP 앱에 버튼 추가

어떻게하면됩니까?

내 접근 방식은 RelativePanel을 만드는 것이 었습니다. 편집기에서 "왼쪽에 배치하십시오"라고 말할 수 있기 때문입니다. 그러나 C# 코드에서이를 수행 할 방법을 찾을 수 없습니다.

+1

RelativePanel 클래스를 사용하여 C#에서 정렬을 설정할 수 있습니다. 예를 들어 RelativePanel.SetLeftOf (buttonA, buttonB) – ctron

답변

1

ctron's comment을 따르고 코드의 연결된 속성 값을 설정하여 수행 할 수 있습니다. 그러나 당신이 두 배에게 하나 개의 버튼, 두 번째 새로운 생성 한 겹칠를 클릭하면,

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 두 가지 방법이 있습니다. 상대적 옵션을 사용하면 매우 간단합니다. 생성 된 각 버튼에 대해 새 이벤트 핸들러를 만들 수 있습니다. 목록 메서드를 사용하면 항목에 대한 클래스를 정의하고 거기에 적절한 대리자를 배치하거나 명령 패턴을 사용한 다음 항목 작성시에 수행 할 작업을 정의 할 수 있습니다. 성공하지 못한다면 스스로 시도해보십시오. 다시 질문을 올리십시오. 원하는 코드를 작성하십시오. – Romasz

관련 문제