繁体   English   中英

基于组合框的WPF条件触发器

[英]Wpf conditional trigger based on combobox

在我的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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM