假设我的应用有一个按钮,可以添加另一个按钮。 如果我按下它,第一个按钮旁边会出现另一个按钮。 此外,新按钮应该成为“添加新按钮”按钮。
我该怎么做?
我的方法是创建一个RelativePanel,因为在编辑器中,您可以说“放置此左侧”。 但是,它无法在C#代码中找到一种方法。
答案 0 :(得分:3)
您可以关注ctron's comment并通过在代码中设置附加属性值来执行此操作。样本看起来像这样 - XAML:
<RelativePanel x:Name="myPanel" Margin="100">
<Button Content="StartBtn" Click="Button_Click"/>
</RelativePanel>
并在后面的代码中:
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);
}
这样可以正常工作,但是如果您单击一次按钮,则第二个新创建的按钮将与第一次单击创建的重叠。如果它不是一个理想的行为,你将不得不以其他方式这样做,在这种情况下你需要一个按钮列表。我已经使用了水平 ListView :
<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}");
}
这需要更多的造型,但应该展示基本的想法。