Ну, во-первых, вы должны принять во внимание, что он возвращает допустимое значение bool (bool?), Поэтому, чтобы сравнить его или установить для другой переменной, вы должны привести его к обычному bool
bool result = (bool)myWindow.DialogResult;
Что касается нуля ... Я не понимаю, почему это должно происходить, если только для него не установлено значение null ПОСЛЕ того, как ему присвоено значение true или false. Вы можете показать свой код?
EDIT:
Ваш код работал нормально для меня, вот что у меня во втором окне:
private void button2_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
}
А в Window1:
private void window1_Loaded(object sender, RoutedEventArgs e)
{
Window2 win = new Window2();
bool? result = win.ShowDialog();
if (result.HasValue && result.Value)
{
//it DID get here
}
}
Есть ли большая разница?