내 앱에 다른 버튼을 추가하는 버튼이 하나 있다고 가정합니다. 누를 경우 첫 번째 버튼 옆에 다른 버튼이 나타납니다. 또한 새 단추가 "새 단추 추가"단추가되어야합니다.프로그래밍 방식으로 UWP 앱에 버튼 추가
어떻게하면됩니까?
내 접근 방식은 RelativePanel을 만드는 것이 었습니다. 편집기에서 "왼쪽에 배치하십시오"라고 말할 수 있기 때문입니다. 그러나 C# 코드에서이를 수행 할 방법을 찾을 수 없습니다.
내 앱에 다른 버튼을 추가하는 버튼이 하나 있다고 가정합니다. 누를 경우 첫 번째 버튼 옆에 다른 버튼이 나타납니다. 또한 새 단추가 "새 단추 추가"단추가되어야합니다.프로그래밍 방식으로 UWP 앱에 버튼 추가
어떻게하면됩니까?
내 접근 방식은 RelativePanel을 만드는 것이 었습니다. 편집기에서 "왼쪽에 배치하십시오"라고 말할 수 있기 때문입니다. 그러나 C# 코드에서이를 수행 할 방법을 찾을 수 없습니다.
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에을 사용했습니다.
새로 생성 된 단추의 동작을 어떻게 지정합니까? 다른 버튼을 추가하지 않고 다른 작업을해야합니다. –
@DanielKrenn 두 가지 방법이 있습니다. 상대적 옵션을 사용하면 매우 간단합니다. 생성 된 각 버튼에 대해 새 이벤트 핸들러를 만들 수 있습니다. 목록 메서드를 사용하면 항목에 대한 클래스를 정의하고 거기에 적절한 대리자를 배치하거나 명령 패턴을 사용한 다음 항목 작성시에 수행 할 작업을 정의 할 수 있습니다. 성공하지 못한다면 스스로 시도해보십시오. 다시 질문을 올리십시오. 원하는 코드를 작성하십시오. – Romasz
RelativePanel 클래스를 사용하여 C#에서 정렬을 설정할 수 있습니다. 예를 들어 RelativePanel.SetLeftOf (buttonA, buttonB) – ctron