微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

删除ListView项目上的button

我开始为UWP开发。 我试图创build一个ListView填充x:bind 。 现在我想在所有单个项目上创build一个button来删除它们。 像Windows 10邮件

我创造了这个:

<ListView x:Name="listActivity" ItemsSource="{x:Bind list}" Grid.Column="0" Header="Activity List" HorizontalAlignment="Center" Width="auto" IsItemClickEnabled="True" ItemClick="showDel"> <ListView.ItemTemplate> <DataTemplate x:DataType="vm:Activity"> <Grid> <Grid.ColumnDeFinitions> <ColumnDeFinition Width="3*"/> <ColumnDeFinition Width="1*"/> </Grid.ColumnDeFinitions> <TextBlock x:Name="txt" Text="{x:Bind name}" Grid.Column="0"/> <Button x:Name="delItem" Click="delActivity" Grid.Column="1" Visibility="Collapsed" Background="Transparent" Margin="100,0"> <SymbolIcon Symbol="Delete"/> </Button> </Grid> </DataTemplate> </ListView.ItemTemplate> </ListView>

我想改变delItembutton的visibility ,但是从C#我不能使用set Name来调用它。 我怎么能做到这一点?

在x86和x64体系结构中获取Windows序列号(MachineGuid)

用Eclipse CDTconfigurationMinGW

如何在Linux中刷新cpucaching区域的地址空间?

如何检查用户是否被允许读取/写入特定的registry项?

g ++:不能确定运行哪个汇编程序

我如何知道在Linux上使用哪个串口?

Windows服务不执行OnStart()

了解Linux中的dynamic库加载

从任务栏图标最小化还原时无边界窗口激活的事件未触发

我如何在指定的位置安装Qt?

我建议使用绑定来执行这个操作。

a)添加一个新的属性到你的类名为Visible的Activity

public class Activity : INotifyPropertyChanged { public string Name { get; set; } private bool _visible; public bool Visible { get { return _visible; } set { _visible = value; RaisePropertyChanged("Visible"); } } public event PropertyChangedEventHandler PropertyChanged; protected void RaisePropertyChanged(string name) { if (PropertyChanged != null) { PropertyChanged(this,new PropertyChangedEventArgs(name)); } } }

b)声明一个新类来将布尔转换为可见性

public class BooleanToVisibilityConverter : IValueConverter { public object Convert(object value,Type targettype,object parameter,string language) { return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed; } public object ConvertBack(object value,string language) { return value is Visibility && (Visibility)value == Visibility.Visible; } }

c)最后更新你的绑定。 不要忘记单向模式设置。

<Page.Resources> <local:BooleanToVisibilityConverter x:Key="VisibilityConverter"/> </Page.Resources> <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <ListView ItemsSource="{x:Bind Activities}"> <ListView.ItemTemplate> <DataTemplate x:DataType="local:Activity"> <Grid> <Grid.ColumnDeFinitions> <ColumnDeFinition Width="3*"/> <ColumnDeFinition Width="1*"/> </Grid.ColumnDeFinitions> <TextBlock x:Name="txt" Text="{x:Bind Name}" Grid.Column="0"/> <Button x:Name="delItem" Click="delItem_Click" Grid.Column="1" Visibility="{x:Bind Visible,Mode=OneWay,Converter={StaticResource VisibilityConverter}}" Background="Transparent" Margin="100,0"> <SymbolIcon Symbol="Delete"/> </Button> </Grid> </DataTemplate> </ListView.ItemTemplate> </ListView> </Grid>

您现在可以通过代码直接访问可视性或控件。 完整的代码以供参考。

using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; namespace App1 { public sealed partial class MainPage : Page { public List<Activity> Activities { get; set; } public MainPage() { this.InitializeComponent(); Activities = new List<Activity>(); Activities.Add(new Activity { Name = "Activity1",Visible = true }); Activities.Add(new Activity { Name = "Activity2",Visible = false }); } private void delItem_Click(object sender,RoutedEventArgs e) { Activities.First().Visible = false; } } public class BooleanToVisibilityConverter : IValueConverter { public object Convert(object value,string language) { return value is Visibility && (Visibility)value == Visibility.Visible; } } public class Activity : INotifyPropertyChanged { public string Name { get; set; } private bool _visible; public bool Visible { get { return _visible; } set { _visible = value; RaisePropertyChanged("Visible"); } } public event PropertyChangedEventHandler PropertyChanged; protected void RaisePropertyChanged(string name) { if (PropertyChanged != null) { PropertyChanged(this,new PropertyChangedEventArgs(name)); } } } }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐