Работает ли StringFormat с this.DataContext

Я связываю TextBlock с коллекцией в коде программной части через this.DataContext = SellerList; Вывод правильный, но когда я применяю StringFormat, я не вижу результата. Ниже приведен код для TextBlock на странице xaml.

<TextBlock Name="dateDTKey" Grid.Row="1" Grid.Column="2" HorizontalAlignment="Right" VerticalAlignment="Bottom" 
      Text="{Binding Path=Date, StringFormat={}{0:dd-MM-yyyy}}" 
      Style="{StaticResource textStyleTextBlock}"/>

person Pankaj Upadhyay    schedule 25.01.2011    source источник
comment
Крайние крайние извинения Мне очень жаль беспокоить вас, ребята, из-за моей глупости. На самом деле я читал значения типа даты в строковое свойство, а не DateTime. Из-за этого Форматирование не применялось. Модератор может удалить этот вопрос, и я еще раз извиняюсь за глупость.   -  person Pankaj Upadhyay    schedule 25.01.2011


Ответы (2)


Источником для привязки является строка, если detailsSellerListingTemplate является ресурсом, вы должны использовать {StaticResource detailsSellerListingTemplate}. Кроме того, TextBlock не нуждается в DataContext для работы этой привязки, поскольку он использует Source.

<Window.Resources>
    <local:DetailsSeller x:Key="detailsSellerListingTemplate"/>
</Window.Resources>
<TextBlock Name="dateDTKey"
           HorizontalAlignment="Right"
           VerticalAlignment="Bottom"
           Text="{Binding Source={StaticResource detailsSellerListingTemplate},
                          Path=Date,
                          StringFormat={}{0:dd-MM-yyyy}}"/>

Это будет работать, если DetailsSeller выглядит примерно так

public class DetailsSeller
{
    public DetailsSeller()
    {
        Date = DateTime.Now;
    }

    public DateTime Date
    {
        get;
        set;
    }
}

Вы говорили о коллекции, но я не понимаю, как это согласуется с привязкой, поэтому, возможно, я что-то не понял в вопросе.

person Fredrik Hedblad    schedule 25.01.2011
comment
очень жаль ...... я неправильно закодировал в вопросе .... обновил его ..... Я связываю this.DataContext = SellerList. - person Pankaj Upadhyay; 25.01.2011

Я думаю, это потому, что у вас есть много фигурных скобок в вашем строковом формате. попробуй это:

StringFormat={0:dd-MM-yyyy}
person Muad'Dib    schedule 25.01.2011
comment
Это не из-за этого.... потому что один и тот же код работает для GridViewColumns списка, чей Listview.DataContext привязан к коллекции, а не к this.Datacontext - person Pankaj Upadhyay; 25.01.2011
comment
Я пытался сделать это dateDTKey.DataContext = SellerList . Может проблема в другом - person Pankaj Upadhyay; 25.01.2011
comment
ну, обычно TextBlock привязан к одному элементу, а не к коллекции, что МОЖЕТ вызывать проблемы. - person Muad'Dib; 25.01.2011
comment
Нет, вы можете привязать текстовый блок к контексту данных. Если бы это не сработало, я бы увидел какой-либо результат. Просто форматирование не применяется - person Pankaj Upadhyay; 25.01.2011