Как изменить текст в метке, используемой в UserControl, когда у них есть класс? - PullRequest
0 голосов
/ 09 декабря 2018

Я делаю класс Notofication таким образом

    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.Но приложение datacontext привязано к MainViewModel.Мне нужно использовать это уведомление и в режиме просмотра Detal.Когда я использую ShowNotification в Mainviewmodel, его работа в порядке.Но когда я использую это же ShowNotification в другом классе, как detailview, он показывает мне сообщение от mainviewmodel.Как связать это или как использовать, чтобы показать сообщение из другого класса тоже?

1 Ответ

0 голосов
/ 10 декабря 2018

решаемая.Я перемещаю UserControl в MainWindow, и в NotificationService использую это

            var notification = App.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MainWindow) as MainWindow;
        notification.Noti_Lab.Content = content;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...