bonjour
j'aimerais savoir si quelqu'un a deja fait cela
je crée un composant a qui on peut passer un converter (IValueConverter)
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 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 }
que j'utilise ainsi
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(); } }
j'aimerais savoir comment binder un textbox par exemlple dans la definition de mon objet pour que ca marche
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}" />
comme ceci
mais la ca marche pas
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>
j'ai tenté ces 3 syntax sans resultat
si quelqu'un a deja fait cela ?
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}}}"/>
Partager