2012-02-13 60 views
0

我想要一个文本框,它将始终在绑定上应用Converter。这种方式我不需要指定转换器,样式将已经包含转换器使用。样式绑定选项

这是我已经尝试过:

我有一个绑定查看视图模型。我使用视图模型的属性覆盖此视图中文本框的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在文本框不过它不再束缚正常显示(当我修改它,视图模型属性没有改变)

我试图在绑定选项中添加Mode = TwoWay,但它没有改变任何东西。

可以解释为什么DateTimeValueToBind属性在此上下文中不再绑定?

预先感谢

+0

你是什么意思与“不再限制; viewmodel属性没有改变”?如果您修改了DataContext,那么CLR属性需要提出,否则UI将保存对旧视图模型的引用。如果您正确地提出DataTimeValueToBind,它应该自动重新显示Text属性。通过将PresentationTraceSources.TraceLevel = High添加到绑定标记中,您可以更好地了解绑定的工作方式。 – dowhilefor 2012-02-13 13:14:20

+0

@dowhilefor:我不修改datacontext实例,我只是想将绑定委托给文本框,以便在我的样式(数据转换器)中为此上下文使用一些通用绑定选项。我可以简单地绑定在Text属性上,但在这种情况下,我总是需要指定转换器以及我想将转换过程放入样式中。 – Guillaume 2012-02-13 13:26:41

回答

0

离开DataContext,绑定到TextDateTimeValueToBind(移离DataContext结合到Text)。你不应该在风格中设置这种绑定。如果路径为.,则您的不能绑定TwoWay。 (而且你还保存了什么?你甚至还有更多的写作,因为"DataContext""Text"长。)

+0

我明白,通常做什么,但在这种情况下,我不知道财产的名称是什么。在我的应用程序中,我有许多日期来显示(不同的属性名称)我想要应用一个通用绑定,强制使用特定的转换器,并始终在绑定时指定它。我怎样才能做到这一点? – Guillaume 2012-02-13 13:22:32

+0

@gbr:您可以在知道绑定到的内容后以编程方式创建绑定。 – 2012-02-13 13:24:33

+0

在我以前的评论我应该写“我想申请一个通用的绑定,将强制使用特定的转换器和**不**总是绑定时指定它”。为了让事情变得简短,我想“风格化”我的绑定选项 – Guillaume 2012-02-13 13:31:36