Нет необходимости использовать метод date () из PHP, если вы не используете временную метку. Если dateposted
- столбец datetime, вы можете вставить текущую дату следующим образом:
$db->query("INSERT INTO table (dateposted) VALUES (now())");
Причина, по которой это не работает, заключается в том, что свойство Label.Content
имеет тип Object
, а Binding.StringFormat
используется только при привязке к свойству типа String
.
Что происходит:
Binding
боксирует ваше значение MaxLevelOfInvestment
и сохраняет его свойство Label.Content
как десятичное значение в коробке. ContentPresenter
. ContentTemplate
не установлен, ContentPresenter
ищет DataTemplate
, определенный для типа Decimal
. Когда он не находит ничего, он использует шаблон по умолчанию. ContentPresenter
, представляет строки с использованием свойства метки ContentStringFormat
. Two Решения возможны:
Вот как использовать Label.ContentStringFormat:
<Label Content="{Binding Path=MaxLevelofInvestment}" ContentStringFormat="Amount is {0}" />
Вот как использовать TextBlock:
<TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is {0}'}" />
Примечание: для простоты я пропустил одна деталь в приведенном выше объяснении: ContentPresenter
фактически использует свои собственные свойства Template
и StringFormat
, но во время загрузки они автоматически привязываются к шаблону ContentTemplate
и ContentStringFormat
свойствам Label
, поэтому кажется, что ContentPresenter
фактически использует свойства Label
.
Попробуйте использовать конвертер ....
<myconverters:MyConverter x:Key="MyConverter"/>
<Label Content="{Binding Path=MaxLevelofInvestment, Converter={StaticResource MyConverter"} />
public class MyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return String.Format("Amount is {0}", value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
}
Я только что проверил, и по какой-то причине он не работает с ярлыком, вероятно, потому, что он использует ContentPresenter для свойства Content внутри. Вместо этого вы можете использовать TextBlock, и это сработает. Вы также можете поместить выдержку TextBlock ниже в содержание метки, если вам нужно наследовать стиль, поведение и т. Д.
<TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is \{0\}'} />
Сделайте универсальный StringFormatConverter : IValueConverter
. Передайте свою строку формата как ConverterParameter
.
Label Content="{Binding Amount, Converter={...myConverter}, ConverterParameter='Amount is {0}'"
Также сделайте StringFormatMultiConverter : IMultiValueConverter
, когда вам нужно больше одного объекта в строке формата, например Completed {0} tasks out of {1}
.
XAML
, так и преобразователя значений.
– IAbstract
2 September 2016 в 13:19