c# - 基于组合框的wpf条件触发
问题描述
在我DataGrid
的中,我将枚举绑定到以下内容ComboBox
:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="cmbDbType" Style="{StaticResource CmbStyle}" ItemsSource="{Binding Path=EnumDbType, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=userControls:ViewerOptions}}" SelectedValue="{Binding DbType, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
值有几个,例如“MDB”、“SQL”……现在我想显示一个基于ComboBox
先前声明的选择(“SQL”)的图标:
<Button x:Name="btnSelectPath" Width="Auto" Command="classes:SpvCommands.SelezionePath" ToolTip="Select Path">
<Grid Height="20">
<Image x:Name="imgFolder" Source="Icons/folder.png" Width="16" Height="16" Visibility="Visible" />
<Image x:Name="imgDb" Source="Icons/db.png" Width="16" Height="16" Visibility="Collapsed" />
</Grid>
</Button>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding ElementName=cmbDbType, Path=SelectedValue}" Value="SQL">
<Setter TargetName="imgFolder" Property="Visibility" Value="Hidden" />
<Setter TargetName="imgDb" Property="Visibility" Value="Visible" />
</DataTrigger>
</DataTemplate.Triggers>
但没有任何改变,默认图标“文件夹”总是出现。有什么提示吗?
解决方案
您应该绑定到DbType
源属性,而不是绑定到ComboBox
在DataTemplate
.
如果Button
定义相同DataGrid
,并且您的数据对象实现了INotifyPropertyChanged
事件并引发了PropertyChanged
该DbType
属性的事件,则以下内容应该有效:
<DataTrigger Binding="{Binding DbType}" Value="{x:Static local:YourEnum.SQL}">
<Setter TargetName="imgFolder" Property="Visibility" Value="Hidden" />
<Setter TargetName="imgDb" Property="Visibility" Value="Visible" />
</DataTrigger>
推荐阅读
- sql - 在 SQL 中基于层次结构合并重叠时间间隔
- python - 如何修复在 MacOS 10.7.5 上安装 PyGame 的错误代码 1?
- c# - 检索服务并在网络核心的某个任意类中使用它
- django - Django 现在在 Heroku 中使用 ASGI + WSGI 的频道
- javascript - 如何构建我的 API 调用,以及将密钥和查询放在哪里?
- java - 以编程方式创建演员会话
- asp.net-boilerplate - asp.net 核心 webapi 服务的模板
- javascript - 使用reduce删除对象中的偶数
- java - 在 SpringBoot 中使用 Copy 命令从 Postgres 导出数据
- ios - Apple Maps 导航通知类型是什么?