首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ItemsControl中的WPF -条件绑定

ItemsControl中的WPF -条件绑定
EN

Stack Overflow用户
提问于 2019-03-15 06:59:06
回答 1查看 473关注 0票数 1

我是WPF的新手,刚刚开始使用数据绑定。我想做的是根据视图模型中的列表生成一个复选框列表。我目前拥有的XAML是:

代码语言:javascript
复制
<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的每个元素都有NameEnabledType属性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-15 07:14:48

因为我猜你想让复选框在TestList.Type改变时出现,我建议制作一个转换器,并将它绑定到checkbox可见性。

代码语言:javascript
复制
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;
    }
}

然后在字典中添加对您的名称空间的引用

代码语言:javascript
复制
xmlns:converters="clr-namespace:Projct.Converters;

在资源字典中

代码语言:javascript
复制
 <converters:CheckBoxVisibilityConverter x:Key="CheckBoxConverter"/>

最后在xaml中

代码语言:javascript
复制
<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> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55173242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档