c# - 使用切换开关在列表中绑定标签的可见属性
问题描述
我有一个切换按钮和列表,其中包含标签。Toggle(Switch) 和 List View 在 Xaml 文件中声明,其中 list 的 Data-cell 是在 cs 文件中以编程方式生成的。我需要根据切换开关在列表中隐藏/显示此标签
Xml代码:
<Switch IsToggled="{Binding IsToggled, Mode=TwoWay}" Grid.Row = "0" Grid.Column = "1" HorizontalOptions = "Start" Margin = "10,8,8,0"></Switch>
<ListView x:Name="lvItemSigns" HasUnevenRows="True" SeparatorVisibility="Default" SeparatorColor="Gray">
cs文件代码:
lvItemSigns.ItemTemplate = new DataTemplate(typeof(DataCell)); lvItemSigns.ItemsSource = VM.ItemSignsList;
class DataCell : ViewCell
{
Label label;
public DataCell()
{
// has grid
var label = new Label();
label.TextColor = Color.Black;
label.Margin = 4;
label.Text = "test";
grid.Children.Add(label, 2, 1);
label.SetBinding(Label.IsVisibleProperty, new Binding("BindingContext.IsToggled", BindingMode.TwoWay, new BooleanConverter(), null, null, "cs-file_name"));
grid.Children.Add(stackLayout, 0, 3);
grid.Margin = new Thickness(8,0,0,0);
View = grid;
}
}
在视图模型中:
public bool _IsToggled;
public bool IsToggled
{
get
{
return _IsToggled;
}
set
{
_IsToggled= value;
OnPropertyChanged("_IsToggled");
}
}
public ItemSignsTabViewModel()
{
ItemSignsList = new ObservableCollection<TicketItem>(daItemSign.GetItemSigns(Ticket.MobileID));
}
我将可见属性绑定到标签,但我仍然可以一直看到标签(当切换开关打开或关闭时)。
我知道我做错了什么。有什么帮助吗?
解决方案
Switch 绑定的 DataContext 与 DataCell 的 DataContext 不同。
两个视图都不是针对相同的对象。您需要为页面和 DataCell 发布视图模型的代码以获得帮助。
推荐阅读
- json - Jq - 使用 jq 将 JSON 转换为另一种 JSON 格式
- javascript - 通过键和交换值搜索两个对象
- javascript - 如何使用 ASP.NET 项目为 scss 和 bootstrap 配置 webpack?
- angular - 如何在 Internet Explorer 上使用 Angular 解决法语特殊字符的问题?
- c++ - 反转字符串 C++
- c++ - 默认情况下不使用 std::next 的范围循环?
- azureservicebus - 如何在消息属性上创建服务总线主题订阅过滤器?
- python - 过滤列表以获取其最大值
- typescript - Typescript 多类继承设计
- r - ggplot geom_point 的圆圈似乎不是圆形的