Dopo un'ulteriore esplorazione, ho trovato una soluzione che funziona bene. Speriamo che qualcuno lo trovi utile:
RadWindow PopupWindow;
public SampleView()
{
InitializeComponent();
PopupWindow = new RadWindow { Header = "Details", Name = "radWindow" };
PopupWindow.Loaded += new RoutedEventHandler(PopupWindow_Loaded);
}
void PopupWindow_Loaded(object sender, RoutedEventArgs e)
{
Canvas canvas = Framework.Traversal.FirstVisualAncestorOfType<Canvas>(PopupWindow);
canvas.MouseLeftButtonDown -= canvas_MouseLeftButtonDown;
canvas.MouseLeftButtonDown += canvas_MouseLeftButtonDown;
}
void canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Point mousepoint = e.GetPosition(null);
var elements = VisualTreeHelper.FindElementsInHostCoordinates(mousepoint, PopupWindow);
if (elements.Count() == 0)
PopupWindow.Close();
}
fonte
2012-05-31 07:34:47
io non vorrei questo comportamento come utente;) – blindmeis
@blindmeis ovviamente non hanno incontrato un caso d'uso. controlla metrotwit. – frostymarvelous