2013-12-16 34 views
1

我在ControlTemplate中使用ValueToVisibilityConverter : IMultiValueConverter,它有一个Image和一个ComboBoxComboBox被绑定到一个字符串列表。 而ValueToVisibilityConverter适用于图像MultiBindingComboBox属性SelectedTextText如何将IMultiValueConverter与Image控件中的单独列表一起使用?

我想检查一下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

我要检查SelectedText字符串名为AllTypeValues的其他列表。如何在转换器中使用这个列表来做同样的事情? –

+0

其他列表在哪里?您试图在视图中解决这个问题,但也许它应该是ViewModel对处理的责任? – franssu

回答

0

多逆变器不必要在这里,你应该只值。

  1. 您可以绑定到SelectedValue并检查转换器中的值是否为空 - null。

  2. 您可以对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.Triggers> 
    <DataTrigger Binding="{Binding ElementName=comboBox, Path=SelectedIndex}" Value="-1"> 
     <Setter TargetName="image" Property="Visibility" Value="Visible" /> 
    </DataTrigger> 
</ControlTemplate.Triggers> 
+0

感谢您的值得回复.. :) –

+0

有没有任何方法来添加一个简单的列表在multibinding或只有一个Dependancy属性可以绑定? –

+0

这是一个新问题,答案是:您可以在Binding表达式中放置任何属性,但绑定的元素必须是DP。 – dovid

相关问题