我想要一个总是在绑定上应用Converter的文本框。这样我就不需要指定转换器了,样式已经包含了要使用的转换器。
这是我已经尝试过的:
我有一个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>
在视图中,我希望在属性DateTimeValueToBind而不是整个视图模型上绑定以下文本框:
<TextBox Style="{StaticResource DateTimeTextBox}" DataContext="{Binding DateTimeValueToBind}"/>
属性DateTimeValueToBind在文本框中正确显示,但它不再绑定(当我修改它时,viewmodel属性不会更改)
我尝试在绑定选项中添加Mode = TwoWay,但它没有改变任何内容。
可以解释为什么DateTimeValueToBind属性在此上下文中不再绑定?
提前致谢
答案 0 :(得分:0)
退出DataContext
,将Text
绑定到DateTimeValueToBind
(将绑定从DataContext
移至Text
)。你永远不应该在一个风格中设置这样的绑定;如果路径为.
,则无法绑定TwoWay
。 (你还节省了什么?你甚至还有更多要写的"DataContext"
比"Text"
长。)