样式绑定选项

时间:2012-02-13 13:09:37

标签: wpf xaml mvvm

我想要一个总是在绑定上应用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属性在此上下文中不再绑定?

提前致谢

1 个答案:

答案 0 :(得分:0)

退出DataContext,将Text绑定到DateTimeValueToBind(将绑定从DataContext移至Text)。你永远不应该在一个风格中设置这样的绑定;如果路径为.,则无法绑定TwoWay。 (你还节省了什么?你甚至还有更多要写的"DataContext""Text"长。)