Спасибо за ввод, я смог обойти мою проблему, создав вычисляемое поле в Quicksight на основе строки, используя parseDate (replace (substring ({date_in_ISO}, 1,19), 'T', "") , 'гггг-мм-дд чч: мм: сс')
Ваш подход к привязке не работает, потому что Ваше свойство FirstMessage не уведомляет, когда это обновляется. Используйте Свойства Зависимости для этого. Посмотрите ниже:
public partial class GetLatest : UserControl
{
public static readonly DependencyProperty FirstMessageProperty = DependencyProperty.Register("FirstMessage", typeof(string), typeof(GetLatest));
public string FirstMessage
{
get { return (string)GetValue(FirstMessageProperty); }
set { SetValue(FirstMessageProperty, value); }
}
public GetLatest()
{
InitializeComponent();
this.DataContext = this;
}
}
XAML:
<UserControl x:Class="TestUserControl.Controls.GetLatest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<TextBlock Text="{Binding FirstMessage}" />
</UserControl>
Каждый раз, когда свойство FirstMessage изменяется, Ваш текстовый блок обновит себя.
FirstMessage установлен после того, как конструктора вызвали. Необходимо изменить текст от метода set FirstMessage.
При инициализации объекта от XAML сначала конструктора по умолчанию называют, затем свойства установлены на объекте.
Этот быстрый пример не будет использовать привязки, потому что значение не настраивается, пока Конструктора по умолчанию не называют, но здесь - как можно заставить текст обнаруживаться.
<UserControl x:Class="TestUserControl.Controls.GetLatest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="GetLatest_Loaded">
<TextBlock Name="theTextBlock"/>
</UserControl>
Затем просто измените свой cs файл к этому:
public partial class GetLatest : UserControl
{
public string FirstMessage { get; set; }
public GetLatest()
{
InitializeComponent();
theTextBlock.Text = this.FirstMessage;
}
private void GetLatest_Loaded(object sender, RoutedEventArgs e)
{
theTextBlock.Text = this.FirstMessage;
}
}
Я рекомендую работать над установкой Привязки вместо этого, поскольку это - довольно подобный спагетти код.
Можно также использовать:
public partial class GetLatest : UserControl
{
private string _firstMessage;
public string FirstMessage
{
get { return _firstMessage; }
set { _firstMessage = value; theTextBlock.Text = value; }
}
public GetLatest()
{
InitializeComponent();
}
}
В случае кода Вы отправили выше его, проблема синхронизации; свойству FirstMessage не присвоили его значение, когда конструктор выполняется. Необходимо было бы выполнить тот код в событии, происходящем позже такой как Загруженный.