У меня есть приложение WPF, в котором есть MainWindow, который разделен на 2 фрейма: один для левого меню навигации, а другой для страниц (например, страница addFirm, страница addlocation и т. д.). Теперь мне нужна строка состояния в главном окне, которая должна отображать сообщения, поднятые на страницах. Что-то вроде этого
<DockPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch" LastChildFill="True" >
<StackPanel DockPanel.Dock="Top" Style="{DynamicResource SMMainStackPanel}" >
<Border Style="{DynamicResource SMBorder}" >
<Label Content="System" FontSize="18" HorizontalContentAlignment="Center" />
</Border>
</StackPanel>
<StackPanel DockPanel.Dock="Left" Style="{DynamicResource SMMainStackPanel}">
<Border VerticalAlignment="Stretch" Style="{DynamicResource SMBorder}" >
<Frame Name="frame1" Source="Menu.xaml" Style="{DynamicResource SMMainFrame}" />
</Border>
</StackPanel>
<StackPanel Style="{DynamicResource SMMainStackPanel}" >
<Border Style="{DynamicResource SMBorder}" >
<Frame Name="frame2" Style="{DynamicResource SMMainFrame}"/>
</Border>
<DockPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch" DockPanel.Dock="Bottom">
<StatusBar>
<StatusBar.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</StatusBar.ItemsPanel>
<StatusBarItem>
<TextBlock>Ready</TextBlock>
</StatusBarItem>
<StatusBarItem Grid.Column="1">
<ProgressBar Value="30" Width="80" Height="18"/>
</StatusBarItem>
<StatusBarItem Grid.Column="2">
<TextBlock Text= "ABC" />
</StatusBarItem>
<StatusBarItem Grid.Column="3">
<TextBlock Text="{Binding Source={x:Static sys:DateTime.Now}}"/>
</StatusBarItem>
</StatusBar>
</DockPanel>
</StackPanel>
</DockPanel>
Теперь я хочу заполнить StatusBarItem из свойства сообщения нижеприведенного класса вместо статического текста «ABC». PS: объект этого класса создается на отдельных страницах, а не в главном окне.
public class StatusHelper : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _message;
private void OnPropertyChanged(String property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
public string Message
{
get
{
return _message;
}
set
{
_message = value;
OnPropertyChanged("Message");
}
}
}
Я создаю объект этого класса на отдельных страницах, а затем, когда операция завершается, как я устанавливаю свойство сообщения этого класса.
Единственная ссылка, которую мне не хватает, это то, как мне получить экземпляр этого класса, который установлен на странице (скажем, предположим, на addlocation) в mainwindow.xaml. Также как мне привязать этот экземпляр к текстовому свойству текстовой области.