我在ValueToVisibilityConverter : IMultiValueConverter
中使用ControlTemplate
,Image
和ComboBox
。 ComboBox
绑定到字符串列表。
ValueToVisibilityConverter
已应用于MultiBinding
ComboBox
属性SelectedText
和Text
的图片上。
我想检查列表中是否存在SelectedText
/ Text
,如果没有,则显示图像。
它与ComboBox
绑定的列表工作正常,但我必须检查另一个列表中的值。谁能让我怎么做?
我的代码是:
<ControlTemplate x:Key="ChannelGroupControlTemplate" TargetType="{x:Type igEditors:XamTextEditor}">
<Microsoft_Windows_Themes:ListBoxChrome x:Name="BorderContainer">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="/Sample;component/Resources/Images/ErrorProvider.png" ToolTip="{l:Localize This item is not found in the system}" HorizontalAlignment="Left"
Focusable="False" VerticalAlignment="Center">
<Image.Visibility>
<MultiBinding Converter="{StaticResource ValueToVisibilityConverter}" >
<Binding ElementName="comboBox" Path="SelectedValue"/>
<Binding ElementName="comboBox" Path="Text"/>
</MultiBinding>
</Image.Visibility>
</Image>
<ComboBox Name="comboBox"
IsEditable="True"
ItemsSource="{Binding Source={x:Static BasicEditors:DSTChannelGroupViewModel.TypeValues}}"
Grid.Column="1" Margin="0" Padding="1" BorderThickness="0" Background="Transparent"/>
</Grid>
</Microsoft_Windows_Themes:ListBoxChrome>
</ControlTemplate>
答案 0 :(得分:0)
这里不需要多转换器,你应该只有值。
你可以绑定到SelectedValue并检查转换器是否值为null - null。
您可以在SelectedIndex属性上使用Trigger,然后将图像设置为可见。
这是第二种方式:
<Image x:Name="image" Grid.Column="0" Source="/Avl.OneParam.UI.Core;component/Resources/Images/ErrorProvider.png"
ToolTip="{l:Localize This item is not found in the system}" HorizontalAlignment="Left"
Focusable="False" VerticalAlignment="Center" Visibility="Hidden" />
并将此触发器添加到ControlTemplate:
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding ElementName=comboBox, Path=SelectedIndex}" Value="-1">
<Setter TargetName="image" Property="Visibility" Value="Visible" />
</DataTrigger>
</ControlTemplate.Triggers>