2016-04-21 4 views
0

У меня есть метка с шириной авто, которая привязана к свойству типа string.Конвертер только стрельбы один раз и не каждый раз с изменением содержимого метки

<Label x:Name="ExampleLabel" Content="{Binding ExampleProperty}"Height="30" Width="Auto" > 

У меня тогда есть свойство, которое связано с шириной этой метки. Преобразователь должен преобразовать ширину в отрицательное значение.

<UserControl.Resources> 
     <c:PositiveToNegativeConverter x:Key="PositiveToNegativeConverter"/> 
</UserControl.Resources> 

"{Binding ElementName=ExampleLabel, Path=Width, Converter={StaticResource PositiveToNegativeConverter}}" 

Я хочу, чтобы конвертер выполнялся при изменении содержимого метки, но он запускается только один раз, когда приложение загружается.

Вот мой конвертер

public class PositiveToNegativeConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, 
     object parameter, CultureInfo culture) 
    { 
     return (double)value * -1; 
    } 

    public object ConvertBack(object value, Type targetType, 
     object parameter, CultureInfo culture) 
    { 
     return Math.Abs((double) value); 
    } 
} 

Любая помощь очень ценится. Благодарю.

+1

ли работа, если вы свяжете на 'ActualWidth' вместо' Width'? 'Width' - это значение времени разработки,' ActualWidth' - текущее значение времени выполнения. –

+0

Он делает. Спасибо чувак. Я не знал о фактической ширине :) – HaloMediaz

+0

Прохладный, я отвечу на этот вопрос. –

ответ

1

Это работает, если вы привязаны к ActualWidth вместо Width? Width - это любое значение , которое вы присвоили, но присвоено значению Width, а ActualWidth - это текущее время, которое обновляется только для чтения, для того, насколько широка вещь в пользовательском интерфейсе.

Я бы ожидать, что это обновление, если вы хотите, чтобы:

"{Binding ElementName=ExampleLabel, Path=ActualWidth, Converter={StaticResource PositiveToNegativeConverter}}" 
+0

Я приму это, как только SO позволит мне :) – HaloMediaz