我是WPF的新手,刚刚开始使用数据绑定。我想做的是根据视图模型中的列表生成一个复选框列表。我目前拥有的XAML是:
<ItemsControl ItemsSource="{Binding Path=TestList, UpdateSourceTrigger=PropertyChanged}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Path=Name}" IsChecked="{Binding Path=Enabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="10,5,10,5" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这将正常工作,并为TestList
中的每一项生成一个复选框。我想要做的是只为条件TestList[i].Type == "Mode"
为真的项目生成复选框。我认为我可能需要使用<DataTrigger>
元素,但我不知道如何做的细节。
编辑只是为了澄清,TestList
的每个元素都有Name
、Enabled
和Type
属性。
发布于 2019-03-15 07:14:48
因为我猜你想让复选框在TestList.Type改变时出现,我建议制作一个转换器,并将它绑定到checkbox可见性。
public sealed class CheckBoxVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null || parameter == null)
return Visibility.Visible;
var type = (string)value;
var condition = (string)parameter;
return type.Equals(condition) ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
}
然后在字典中添加对您的名称空间的引用
xmlns:converters="clr-namespace:Projct.Converters;
在资源字典中
<converters:CheckBoxVisibilityConverter x:Key="CheckBoxConverter"/>
最后在xaml中
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox
Margin="10,5,10,5"
Content="{Binding Path=Name}"
IsChecked="{Binding Path=Enabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding Path=Type, Converter={StaticResource CheckBoxConverter}, ConverterParameter=Mode}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
https://stackoverflow.com/questions/55173242
复制相似问题