当他们有Class时,如何更改UserControl中使用的标签中的文本



我让Notofization类看起来像这个

public class NotificationService : ViewModelBase, INotificationService
{
public async Task ShowNotification (string content)
{
NotificationContent = content;
ShowHideMenu("showNotificationSB", App.Current.MainWindow.FindName("notification") as StackPanel);
await Task.Delay(5000);
ShowHideMenu("hideNotificationSB", App.Current.MainWindow.FindName("notification") as StackPanel);
}
public NotificationService()
{
}
private string _notificationContent;
public string NotificationContent
{
get { return _notificationContent; }
set
{
_notificationContent = value;
OnPropertyChanged();
}
}
private void ShowHideMenu(string Storyboard, StackPanel pnl)
{
Storyboard sb = App.Current.MainWindow.Resources[Storyboard] as Storyboard;
sb.Begin(pnl);
}
}

并拥有类似的用户控制

<Border DataContext="{Binding NotificationService}" Background="#78909C" BorderThickness="2,1,2,5" CornerRadius="0,0,20,20" BorderBrush="#263238">
<Label HorizontalAlignment="Center" VerticalAlignment="Center" Content="{Binding NotificationContent, UpdateSourceTrigger=PropertyChanged}" Width="Auto" FontSize="12" Foreground="#000000" Margin="10,0,10,0"/>
</Border>

它在MainWindow.xaml中。但是应用程序数据上下文绑定到MainViewModel。我也需要在Detal视图中使用此通知。当我在Mainviewmodel中使用ShowNotification时,它可以正常工作。但当我在detailview等其他类中使用相同的ShowNotification时,它会向我显示来自mainviewmodel的消息。如何绑定这个或者如何使用来显示来自其他类的消息?

已解决。我将UserControl移到MainWindow,并在NotificationService中使用此

var notification = App.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MainWindow) as MainWindow;
notification.Noti_Lab.Content = content;

最新更新