首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTrigger on DataGridTextColumn

DataTrigger on DataGridTextColumn
EN

Stack Overflow用户
提问于 2012-04-10 12:20:02
回答 1查看 3K关注 0票数 0

我正试图在我的一个combobox元素上附加一个数据工具。触发器应该读取DataGridTextColumn (combobox的祖先)的附加属性,并在此基础上作出决定。现在的问题是,DataGridTextColumn不是视觉树的一部分,所以我不能通过RelativeSource祖先获得它。这是示例代码。

代码语言:javascript
复制
<ComboBox Name="cmbFilter" DisplayMemberPath="CategoryName">
    <ComboBox.Style>
        <Style>
            <Style.Triggers>
               <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridTextColumn}}, 
                             Path=Header}"
                             Value="Id">
                    <Setter Property="Control.Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ComboBox.Style>
</ComboBox>

任何一个人都可以提出其他的建议

编辑:

@denis我不太明白你的解决方案,所以让我详细解释一下。我正在开发一个通用过滤器,它适用于所有需要过滤功能的DataGrid。DataGrid定义将通过在DataGrid上指定自定义附加属性"IsFilterable“来指定是否需要过滤。单个DataGridColum将通过在DataGridColumn上指定"FilterDisplayType“来指定它们想要的筛选器类型(组合框或文本框)。DataGrid只知道上面的事情。然后,根据DataGrid和DataGridColumn (所有类型的列)上附加的属性,过滤器将处理所有功能。

EN

回答 1

Stack Overflow用户

发布于 2012-04-10 19:42:17

我在评论中的意思是,您可以在绑定到的属性上触发,而不是在标头上触发。因为如果您响应标头更改,则必须触发标头,这是很好的,但在您的模型上,这可以是您响应的相同属性,只有在不同的位置。

此外,您也不能在DataGridTextColumn中放置组合框,所以您必须这样做:

代码语言:javascript
复制
<DataGridComboBoxColumn ItemsSource="{Binding CategoryNameItems}" 
                        DisplayMemberPath="{Binding CategoryName}" 
                        Visibility="{Binding MyVisibilityProperty, Converter={StaticResource BoolToVisibility}}" />

它将隐藏整个列,或者只隐藏组合框,将其放在CellTemplate中:

代码语言:javascript
复制
<DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ComboBox ItemsSource="{Binding CategoryNameItems}" DisplayMemberPath="{Binding CategoryName}" 
                                Visibility="{Binding MyVisibilityProperty, Converter={StaticResource BoolToVisibility}}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10088672

复制
相关文章

相似问题

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