2013-12-16 33 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

相關問題