2009-11-03 12 views

Respuesta

40

Puede crear un estilo en la imagen que utiliza un DataTrigger para intercambiar el origen de la imagen dependiendo de un enlace. En este ejemplo, la imagen cambia dependiendo del valor de un booleano llamado simplemente "Valor".

<Image Width="16"> 
     <Image.Style> 
      <Style TargetType="{x:Type Image}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding Value}" Value="False"> 
         <Setter Property="Source" Value="Resources/image1.png"/> 
        </DataTrigger> 
        <DataTrigger Binding="{Binding Value}" Value="True"> 
         <Setter Property="Source" Value="Resources/image2.png"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Image.Style> 
    </Image> 
+0

¿Funciona esto para las propiedades de un elemento diferente? Por ejemplo, ¿qué ocurre si quiero vincular una imagen basada en el valor de una etiqueta? ¿Funcionará de la misma manera? ¿Podrías elaborar? – user3841581

0

Si solo vincula la propiedad Image::Source directamente, la única forma de lograrlo es con un IValueConverter personalizado.

2

Si alguien está buscando Value Converter para encuadernación. Esto es lo que solía

<Image Source="{Binding Converter={StaticResource ImageConverter},ConverterParameter=\{Status\}}" /> 

public class StatusToImageConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     string statusValue = parameter.ToString().ToUpper(); 

     if (!string.IsNullOrEmpty(statusValue)) 
     { 
      string result = string.Empty; 

      switch (statusValue) 
      { 
       case "IDLE": 
        result = "idle.png"; 
        break; 
       case "OFFLINE": 
        result = "offline.png"; 
        break; 
       default: 
        result = "online.png"; 
        break; 
      } 

      var uri = new Uri("pack://application:,,,/PIE;component/Images/" + result); 

      return uri; 
     } 

     return string.Empty; 
    } 

    // No need to implement converting back on a one-way binding 
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return DependencyProperty.UnsetValue; 
    } 
} 

acotada Enum

public enum DevStatus 
{ 
    Idle = 1, 
    Offline = 2, 
    Active = 3, 
} 

Conjunto de enumeración del modelo de vista y el convertidor se unirá la imagen correspondiente.

<Image Source="{Binding DevStatus, Converter={StaticResource ImageConverter}}" /> 
+0

¿podría explicar la parte ConverterParameter = \ {Status \}? – user3841581

+0

En mi caso su una enumeración pública valor de enumeración devicestatus { Idle = 1, Desconectado = 2, Activa = 3, } – dnxit

+0

dnxit

Cuestiones relacionadas