bonjour

j'aimerais savoir si quelqu'un a deja fait cela
je crée un composant a qui on peut passer un converter (IValueConverter)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 public class ValueConverterControl : Control
    {
        static ValueConverterControl()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(ValueConverterControl), new FrameworkPropertyMetadata(typeof(ValueConverterControl)));
        }
 
        #region ValueConverter (DP SHORT)
        public IValueConverter ValueConverter { get { return (IValueConverter)GetValue(ValueConverterProperty); } set { SetValue(ValueConverterProperty, value); } }
        public static readonly DependencyProperty ValueConverterProperty = DependencyProperty.Register("ValueConverter", typeof(IValueConverter), typeof(ValueConverterControl), new PropertyMetadata(null));
        #endregion 
    }
j'utilise un converter exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 public class SampleConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return null;
        }
 
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
que j'utilise ainsi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<DockPanel.Resources>
            <SampleConverter x:Key="sc" />            
        </DockPanel.Resources>
  <ValueConverterControl Background="Red"
                               Height="25"
                               DockPanel.Dock="Top"
                               ValueConverter="{StaticResource sc}" />
j'aimerais savoir comment binder un textbox par exemlple dans la definition de mon objet pour que ca marche
comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 <Style TargetType="{x:Type comp:ValueConverterControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type comp:ValueConverterControl}">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                        <TextBlock Text="{Binding ., Converter={TemplateBinding ValueConverter}}" />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
mais la ca marche pas
j'ai tenté ces 3 syntax sans resultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<TextBlock Text="{Binding ., Converter={TemplateBinding ValueConverter}}" />
<TextBlock Text="{Binding ., Converter={Binding ValueConverter}}" />
<TextBlock Text="{Binding ., Converter={Binding ValueConverter, RelativeSource={RelativeSource TemplateParent}}}"/>
si quelqu'un a deja fait cela ?