Обновление текста в Adorner по нажатию кнопки
Я создал свой собственный рекламный элемент, чтобы покрыть свое главное окно серым холстом вместе с текстовым блоком в центре, чтобы показать некоторый текст статуса, пока я работал над другим окном.
В настоящее время я выбираю требуемый adornerElement(т.е. Canvas с текстовым блоком) из моих ресурсов и передаю его рекламодателю в конструкторе моего представления следующим образом:
ResourceDictionary reportResourceDictionary = App.LoadComponent(new Uri("Resources/ReportResources.xaml", UriKind.Relative)) as ResourceDictionary;
UIElement adornerElement = reportResourceDictionary["RefreshingReportAdorner"] as UIElement;
mainWindowBlockMessageAdorner = new MainWindowBlockMessageAdorner(mainPanel, adornerElement);
Но я хочу обновить этот текст в текстовом блоке в некоторых сценариях, скажем, если я нажму на какую-то кнопку в другом окне, но как обновить текст динамически??
Элемент Adorner из файла ресурсов
<Grid x:Key="RefreshingReportAdorner">
<Rectangle Fill="Gray"
StrokeThickness="1"
Stroke="Gray"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"/>
<Border BorderBrush="Black"
BorderThickness="2"
Background="White"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<TextBlock i18n:LanguageManager.VisualId="6"
Text="Some Text(Update dynamically)"
Padding="15,10,15,10"/>
</Border>
</Grid>
Дайте мне знать, если требуется дополнительный код или подход.
1 ответ
Вы пытались создать какую-то модель и передать ее в DataContext элемента RefreshingReportAdorner?
Код:
var reportResourceDictionary = App.LoadComponent(new Uri("Resources/ReportResources.xaml", UriKind.Relative)) as ResourceDictionary;
var adornerElement = reportResourceDictionary["RefreshingReportAdorner"] as FrameworkElement;
var model = new Model();
model.MyText = "Initial text";
adornerElement.DataContext = model;
mainWindowBlockMessageAdorner = new MainWindowBlockMessageAdorner(mainPanel, adornerElement);
...
model.MyText = "Text after click";
XAML:
<TextBlock i18n:LanguageManager.VisualId="6"
Text="{Binding MyText}"
Padding="15,10,15,10"/>
Модель:
public class Item : INotifyPropertyChanged
{
private string _myText;
public string MyText
{
get
{
return this._myText;
}
set
{
this._myText= value;
this.OnPropertyChanged("MyText");
}
}
}