stringformat wpf converter

wpf datagrid stringformat



¿Se puede usar un IValueConverter en un enlace en la propiedad BorderBrush? (1)

Necesitas usar StaticResource para acceder a tu convertidor

Ejemplo:

<Border BorderBrush="{Binding IsSelected, Converter={StaticResource BrushConverter}}">

Tengo una clase que implementa IValueConverter que está destinado a ser utilizado para convertir un valor booleano en un Brush . Estoy tratando de usar el IValueConverter en un enlace a la propiedad BorderBrush de un control de BorderBrush :

<Window x:Class="DomPicker.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:cc="clr-namespace:CustomControls;assembly=CustomControls" xmlns:sys="clr-namespace:System;assembly=mscorlib" DataContext="{Binding Path=Domains, RelativeSource={RelativeSource Self}}" Height="350" Title="My Title" Width="525"> <cc:CarSystemWindow.Resources> <cc:BooleanToBrushConverter x:Key="BrushConverter" True="Black" False="Transparent" /> <DataTemplate x:Name="DomainTemplate" DataType="DomainViewModel"> <Border BorderBrush="{Binding Converter=BrushConverter, Path=IsSelected}"> . . . </Border> </DataTemplate> </cc:CarSystemWindow.Resources> <Grid> <ListBox . . . Name="DomainListBox" /> </Grid> <Window>

Aquí está el código para la propiedad Dominios en el código detrás:

public static readonly DependencyProperty DomainsProperty = DependencyProperty.Register( "Domains", typeof( ObservableCollection<DomainViewModel> ), typeof( MainWindow ), new PropertyMetadata( null ) ); public ObservableCollection<DomainViewModel> Domains { get { return (ObservableCollection<DomainViewModel>) GetValue( DomainsProperty ); } set { SetValue( DomainsProperty, value ); } }

Cuando compilo el código, que de ninguna manera está terminado, BorderBrush un error del compilador en el enlace BorderBrush :

The TypeConverter for "IValueConverter" does not support converting from a string.

Aquí está el código para el IValueConverter :

public class BooleanConverter<T> : IValueConverter { public T False { get; set; } public T True { get; set; } public BooleanConverter( T trueValue, T falseValue ) { // Set the values of True and false to the values we were passed. True = trueValue; False = falseValue; } public object Convert( object value, Type targetType, object parameter, CultureInfo culture ) { return value is bool && ( (bool) value ) ? True : False; } public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture ) { return value is T && EqualityComparer<T>.Default.Equals( (T) value, True ); } } [ValueConversion( typeof( bool ), typeof( Brush ) )] public class BooleanToBrushConverter : BooleanConverter<Brush> { /// <summary> /// Set us up so we convert true to a Black <see cref="SolidColorBrush"/> and /// false to a Red SolidColorBrush. /// </summary> public BooleanToBrushConverter() : base( new SolidColorBrush( Colors.Black ), new SolidColorBrush( Colors.Red ) ) { } }

¿Alguien puede decirme que estoy haciendo mal?