使用唯一 ID 以编程方式创建按钮
本文关键字:方式 创建 按钮 编程 唯一 ID | 更新日期: 2023-09-27 18:34:08
我通过首先填充一个包含get/set
方法的类,然后在XAML
中使用该信息来创建了一些按钮。
C#
List<MediaDetail> movies = new List<MediaDetail>();
...
...
MovieListView.ItemsSource = movies;
XAML
<Window.Resources>
<DataTemplate x:Key="ItemTemplate">
<WrapPanel Orientation="Vertical" Width="Auto">
<Button Width="200" Height="300" Click="SelectMovie_Click" Name ="NEED THIS TO BE DYNAMIC">
<Button.Template>
<ControlTemplate>
<Image Source="{Binding image}"/>
</ControlTemplate>
</Button.Template>
</Button>
<TextBlock Text="{Binding title}" HorizontalAlignment="Center"/>
</WrapPanel>
</DataTemplate>
</Window.Resources>
<ListView Name="MovieListView" ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding Path = movies}" Margin="0,0,0,0" SelectionChanged="MovieListView_SelectionChanged" Grid.Row="1">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="5" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
但是问题是,我需要每个按钮都有一个唯一的ID。我在其他地方读到这不能用XAML
完成,但我不确定如何在我的C#
代码中创建这些按钮或在哪里创建这些按钮。
我认为这里最灵活的解决方案是定义一种行为:
public class UniqueNameBehavior : Behavior<FrameworkElement>
{
protected override void OnAttached()
{
base.OnAttached();
//assign unique name to the associated element, for example:
AssociatedObject.Name = Guid.NewGuid().ToString().Replace("-", null);
}
}
在 XAML 中,将此行为附加到任何元素:
<Button>
<i:Interaction.Behaviors>
<local:UniqueNameBehavior/>
</i:Interaction.Behaviors>
</Button>
其中xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
来自System.Windows.Interactivity
程序集。