Я предполагаю, что это - то, что Вы хотите:
var data = '{"count" : 1, "stack" : "sometext\\n\\n"}';
(Необходимо выйти "\" в строке (превращение его в двойное - "\"), иначе это станет новой строкой в источнике JSON, не данных JSON.)
Я просмотрел несколько вариантов и примеров. Мне кажется, что лучше всего работает «удар» по одному из свойств, заставляющих Popup самостоятельно перемещаться. Я использовал свойство HorizontalOffset.
Я установил его на (сам + 1), а затем вернул исходное значение. Я делаю это в обработчике событий, который запускается при изменении положения окна.
// Reference to the PlacementTarget.
DependencyObject myPopupPlacementTarget;
// Reference to the popup.
Popup myPopup;
Window w = Window.GetWindow(myPopupPlacementTarget);
if (null != w)
{
w.LocationChanged += delegate(object sender, EventArgs args)
{
var offset = myPopup.HorizontalOffset;
myPopup.HorizontalOffset = offset + 1;
myPopup.HorizontalOffset = offset;
};
}
Когда окно перемещается, всплывающее окно перемещается. Незначительное изменение HorizontalOffset не замечено, потому что окно и всплывающее окно уже перемещаются.
Я все еще оцениваю, является ли всплывающее окно лучшим вариантом в тех случаях, когда элемент управления остается открытым во время другого взаимодействия. Я думаю, что предложение Рэя Бернса поместить этот материал в слой Adorner кажется хорошим подходом для некоторых сценариев.
Вы не можете этого сделать. Когда всплывающее окно отображается на экране, оно не перемещается, если перемещается его родительский элемент. Это поведение элемента управления Popup. проверьте это: http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup.aspx
вы можете использовать Window (с WindowStyle = None) вместо Popup это может решить вашу проблему.
Загрузите образец Popup Popup Position по адресу:
http://msdn.microsoft.com/en-us/library/ms771558(v=VS.90).aspx
Пример кода использует класс CustomPopupPlacement с объектом Rect и привязывается к горизонтальному и вертикальному смещению для перемещения Popup.
<Popup Name="popup1" Placement="Bottom" AllowsTransparency="True"
IsOpen="{Binding ElementName=popupOpen, Path=IsChecked}"
HorizontalOffset="{Binding ElementName=HOffset, Path=Value, Mode=TwoWay}"
VerticalOffset="{Binding ElementName=VOffset, Path=Value, Mode=TwoWay}"
Если вы хотите переместить всплывающее окно, есть простой трюк: измените его положение, затем установите:
IsOpen = false;
IsOpen = true;