Я хочу текстовое поле, которое всегда будет использовать конвертер для привязки. таким образом мне не нужно указывать конвертер, стиль уже содержит конвертер для использования.Параметры привязки стиля
Это то, что я уже пробовал:
У меня есть ViewModel, связанный для просмотра. Я переопределяю datacontext текстового поля в этом представлении, используя свойство модели представления. Это позволяет мне использовать общий стиль для моего текстового поля
У меня есть следующий стиль:
<Style x:Key="DateTimeTextBox" TargetType="TextBox">
<Setter Property="ToolTipService.ShowDuration" Value ="40000"/>
<Setter Property="Text" Value ="{Binding Path=.,Converter={StaticResource myConverter},UpdateSourceTrigger=PropertyChanged}"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="Unknown date format"/>
</Trigger>
</Style.Triggers>
</Style>
В представлении я хочу иметь следующее текстовое поле, связанное с porperty DateTimeValueToBind вместо всей точки зрения модель:
<TextBox Style="{StaticResource DateTimeTextBox}" DataContext="{Binding DateTimeValueToBind}"/>
DateTimeValueToBind свойство отображается должным образом в текстовом поле, однако он не связан больше (когда я изменил его, ViewModel свойство не изменяется)
Я попытался добавить Mode = TwoWay в опции привязки, но ничего не изменил.
Не могли бы объяснить, почему свойство DateTimeValueToBind больше не связано в этом контексте?
Заранее спасибо
Что вы имеете в виду, если «не привязан больше, свойство viewmodel не изменено»? Если вы изменяете DataContext, свойство CLR нужно поднять, иначе пользовательский интерфейс будет содержать ссылку на старый режим просмотра. Если вы правильно поднимете DataTimeValueToBind, он должен автоматически переделать свойство Text. Вы можете лучше понять, как работают ваши привязки, добавив PresentationTraceSources.TraceLevel = Высокий к вашим разметкам привязки. – dowhilefor
@dowhilefor: я не изменяю экземпляр datacontext, я просто хочу делегировать привязку к текстовому полю, чтобы использовать некоторые общие параметры привязки в моем стиле (преобразователе данных) для этого контекста. я мог бы просто привязываться к атрибуту Text, но в этом случае мне всегда нужно будет указать конвертер, и я хочу, чтобы процесс конвертации был в стиле. – Guillaume