我有一个UserControl
,我写的是TextBox
和Button
。当用户点击该按钮时,我希望将当前日期/时间放入TextBox
。下面的代码有两个问题:
从本质上讲,我希望在>> 期间 设置值。如果可能的话,我想保留这个纯xaml,但我知道它是否需要在代码隐藏中。任何帮助将不胜感激!
<Button x:Name="ClockGo">
<Image Source="/Best.Controls;component/Resources/clock_go.png" />
</Button>
<TextBox HorizontalAlignment="Stretch">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ClockGo, Path=IsPressed}" Value="True">
<Setter Property="Text" Value="{Binding Source={x:Static sys:DateTime.Today}, StringFormat='{}{0:MM/dd/yyyy}'}" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
答案 0 :(得分:4)
你应该能够摆脱&#34;双向绑定需要Path或XPath&#34;将绑定模式设置为OneWay的异常。默认情况下,Textbox具有双向绑定,我认为该异常是由于值转换造成的。
<Setter Property="Text" Value="{Binding Source={x:Static sys:DateTime.Now}, StringFormat='{}{0:MM/dd/yyyy hh:mm:ss}', Mode=OneWay}" />
在第二个点上,仅在按下按钮时显示该值并在释放按钮单击后消失,这是预期的行为。触发器设置器仅在绑定条件为真时应用,当条件不再为真时,它将恢复为默认值。
请参阅备注部分的MSDN网站,其中列出了上述行为:http://msdn.microsoft.com/en-us/library/system.windows.trigger.aspx
除非你有充分理由坚持使用基于XAML的解决方案,否则代码背后似乎是更好的选择,而不是使用触发器进行调整。