【问题标题】:Getting the current culture date pattern in XAML code在 XAML 代码中获取当前区域性日期模式
【发布时间】:2013-01-21 21:14:58
【问题描述】:

所以在我的(大型)项目中,我有一个特殊的日期框,它源自一个蒙面文本框,因此具有“格式”属性。它通过给它一个短日期格式来工作,例如:

<extended:DateMaskTextBox Format="yyyy-MM-dd" />

现在在应用程序开始时,根据某些逻辑设置 CultureInfo.CurrentCulture.DateTimeFormat 对象的 ShortDatePattern 属性。我想获取此 ShortDatePattern 以将其用作我的 DateMaskTextBox 的 Format 属性的值。

到目前为止,我已经得到了这个,但它工作:

<extended:DateMaskTextBox Format="{Binding Source={x:Static glob:CultureInfo.CurrentCulture}, Path=DateTimeFormat.ShortDatePattern}" />

知道为什么这不起作用吗?谢谢。

【问题讨论】:

    标签: wpf xaml date binding currentculture


    【解决方案1】:

    绑定语法是正确的,应该可以正常工作。您是否在输出窗口中收到任何绑定错误?您是否尝试过在 TextBlock.Text 上显示相同的 Binding 来代替您的控件以查看字符串是否通过?

    没有看到它的代码,我无法判断,但我怀疑问题可能出在 DateMaskTextBox 而不是 Binding 上。如果控件未正确设置以尊重其 Format 属性的新设置值,则绑定值可能根本没有被使用或使用得太晚而影响您在与控件交互时看到的行为。

    【讨论】:

    • 感谢您的回复。我尝试使用该绑定添加一个 TextBlock 及其 Text 属性,它确实工作正常。所以问题一定出在 DateMaskTextBox 上。请注意,Format 属性只是一个常规的旧属性,可以使用 Binding 吗?我现在不喜欢的一件事是我在属性设置器中的断点并不总是关闭。如果我将 Format 值硬编码为某种东西,我的断点会在调试模式下被命中。但是当我将 Format 属性设置为此绑定时,我的断点不会被命中。这有什么原因吗?
    • 绑定只能在 DependencyProperty(作为目标)上设置,所以如果您只是使用标准的 get/set 属性,它根本不起作用。查看msdn.microsoft.com/en-us/library/ms752914.aspx 以获得使用 DP 的一些很好的解释和示例。请注意,即使设置了 DP,您仍然不会在 setter 中遇到断点,因为 Binding 直接调用 SetValue。
    • 是的,那是我的问题。我为我的属性添加了一个 DependencyProperty,我必须监听 OnPropertyChanged 事件才能正确设置我的属性值。谢谢约翰! TL;DR 版本:我的绑定是正确的,我只需要一个 DependencyProperty 作为我的属性,这样绑定就可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2014-07-31
    • 2016-09-27
    • 2021-12-09
    • 2016-05-05
    • 2023-02-08
    相关资源
    最近更新 更多