Не создаётся окно UserControl
Создаю объект UserControl в главном классе через new UserControl1() Приходит сообщение из PluginContext.Operations.AddNotificationMessage("UserControl", "UserControl");
а окошка нету... почему так?
cs:
namespace Test
{
/// <summary>
/// Логика взаимодействия для UserControl1.xaml
/// </summary>
public partial class UserControl1 : UserControl
{
public UserControl1()
{
PluginContext.Operations.AddNotificationMessage("UserControl", "UserControl");//"дебаг"
InitializeComponent();
}
}
}
xaml:
<UserControl x:Class="Test.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Test"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid Width="600" Height="320" Margin="0,0,0,0" Background="#FF3C3F3E" AutomationProperties.Name="grid">
<StackPanel>
<Label Content="ПАРАМЕТРЫ ПОДКЛЮЧЕНИЯ К СЕРВЕРУ" Foreground="White" FontFamily="Arial" FontSize="18" FontWeight="Normal" HorizontalAlignment="Center" Margin="0,20,0,20"/>
<Grid Height="185">
<Label Content="Адрес сервера:" Background="#FF202020" Foreground="White" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontFamily="Arial" FontSize="14" Margin="30,0,0,140" HorizontalAlignment="Left" Width="120"/>
<TextBox HorizontalAlignment="Left" Margin="150,0,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="420" Height="45" TextAlignment="Left" BorderBrush="#FF202020" VerticalContentAlignment="Center" Padding="10,0,0,0"/>
<Label Content="Логин:" Background="#FF202020" Foreground="White" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontFamily="Arial" FontSize="14" Margin="30,70,0,70" HorizontalAlignment="Left" Width="120"/>
<TextBox HorizontalAlignment="Left" Margin="150,0,0,0" TextWrapping="Wrap" Text="Admin" VerticalAlignment="Center" Width="135" Height="45" BorderBrush="#FF202020" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" Padding="10,0,0,0"/>
<Label Content="Пароль:" Background="#FF202020" Foreground="White" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontFamily="Arial" FontSize="14" Margin="315,70,0,70" HorizontalAlignment="Left" Width="120"/>
<PasswordBox HorizontalAlignment="Left" Margin="435,0,0,0" VerticalAlignment="Center" Width="135" Height="45" BorderBrush="#FF202020" Padding="10,0,0,0" VerticalContentAlignment="Center"/>
</Grid>
</StackPanel>
<Button Content="Отмена" HorizontalAlignment="Left" Margin="445,255,0,0" VerticalAlignment="Top" Background="#FF202020" BorderThickness="0,0,0,0" Foreground="White" Width="155" Height="65" FontFamily="Arial" FontWeight="Bold" FontSize="18"/>
<Button Content="Сохранить и закрыть" HorizontalAlignment="Left" Margin="185,255,0,0" VerticalAlignment="Top" Background="#FF202020" BorderThickness="0,0,0,0" Foreground="White" Width="260" Height="65" FontFamily="Arial" FontWeight="Bold" FontSize="18"/>
<Button Content="Подключение" HorizontalAlignment="Left" Margin="0,255,0,0" VerticalAlignment="Top" Background="#FF202020" BorderThickness="0,0,0,0" Foreground="White" Width="185" Height="65" FontFamily="Arial" FontWeight="Bold" FontSize="18"/>
</Grid>
</UserControl>
Может ему нужно дать какую нибудь команду как windows form window.ShowDialog();
Но такой не нашла для wpf
Ответы (1 шт):
Вы правильно предложили, нужно использовать window.ShowDialog();.
Для начала в форме диалогового окна нужно прописать обработку кнопкам Сохранить и закрыть и Отмена
private void ButtonCancel_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;
}
private void ButtonOk_Click(object sender, RoutedEventArgs e)
{
if(!(bool)RBDeleteFromMAket.IsChecked && !(bool)RBDeleteWithSaves.IsChecked)
{
LabelWarn.Content = "выберете один из вариантов";
return;
}
DialogResult = true;
}
(код обработки взял из своего проекта, логика конечно может отличаться)
DialogResult - является нужным для нас свойством, от значения которого зависит будут ли применяться изменения
Далее от вашей формы создается объект в том месте, где нужно
и в условии проверяем результат диалога вот так:
SomeForm form = new SomeForm();
if (form.ShowDialog() == true)
{
//через этот объект можем обращаться к открытым полям, тут же вытянуть вам необходимые поля из этой формы
form.DoSome();
}
else
{
}