在我的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
源属性,而不是绑定到DataTemplate
中定义的ComboBox
元素。
如果Button
在同一DataGrid
中定义,并且数据对象实现INotifyPropertyChanged
事件并为DbType
属性引发PropertyChanged
事件,则以下内容应该有效:
<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>