UWP Position absolute popup
I have popup.
When click button in GridView
, popup will show. I set VerticalOffset
and HorizontalOffset
for popup.
But i have problem, when i scroll GridView
popup not moving.
I can set popup absolute?
.net xaml uwp
add a comment |
I have popup.
When click button in GridView
, popup will show. I set VerticalOffset
and HorizontalOffset
for popup.
But i have problem, when i scroll GridView
popup not moving.
I can set popup absolute?
.net xaml uwp
add a comment |
I have popup.
When click button in GridView
, popup will show. I set VerticalOffset
and HorizontalOffset
for popup.
But i have problem, when i scroll GridView
popup not moving.
I can set popup absolute?
.net xaml uwp
I have popup.
When click button in GridView
, popup will show. I set VerticalOffset
and HorizontalOffset
for popup.
But i have problem, when i scroll GridView
popup not moving.
I can set popup absolute?
.net xaml uwp
.net xaml uwp
edited Nov 26 '18 at 9:02
Martin Zikmund
26.1k63762
26.1k63762
asked Nov 26 '18 at 8:45
Mr DMr D
53
53
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
As the documentation says, the Offset
properties set the position relative to the application window:
Gets or sets the distance between the left side of the application
window and the left side of the popup.
This means, that the position is set in absolute relative to the window and will not update automatically when the GridView
is scrolled. Instead, you will have to update it manually by observing the scroll viewer events. First use the VisualTreeHelper
to find ScrollView
inside the GridView
:
public static ScrollViewer FindScrollViewer(DependencyObject d)
{
if (d is ScrollViewer) return d as ScrollViewer;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(d); i++)
{
var child = VisualTreeHelper.GetChild(d, i);
var result = FindScrollViewer(child);
if (result != null) return result;
}
return null;
}
You can use this helper method like this:
var scrollViewer = FindScrollViewer(MyGridView);
And now attach the scrollViewer.ViewChanged
or scrollViewer.ViewChanging
event and update the popup position as you see fit.
It work. thank you verry much
– Mr D
Nov 27 '18 at 2:55
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53477393%2fuwp-position-absolute-popup%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
As the documentation says, the Offset
properties set the position relative to the application window:
Gets or sets the distance between the left side of the application
window and the left side of the popup.
This means, that the position is set in absolute relative to the window and will not update automatically when the GridView
is scrolled. Instead, you will have to update it manually by observing the scroll viewer events. First use the VisualTreeHelper
to find ScrollView
inside the GridView
:
public static ScrollViewer FindScrollViewer(DependencyObject d)
{
if (d is ScrollViewer) return d as ScrollViewer;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(d); i++)
{
var child = VisualTreeHelper.GetChild(d, i);
var result = FindScrollViewer(child);
if (result != null) return result;
}
return null;
}
You can use this helper method like this:
var scrollViewer = FindScrollViewer(MyGridView);
And now attach the scrollViewer.ViewChanged
or scrollViewer.ViewChanging
event and update the popup position as you see fit.
It work. thank you verry much
– Mr D
Nov 27 '18 at 2:55
add a comment |
As the documentation says, the Offset
properties set the position relative to the application window:
Gets or sets the distance between the left side of the application
window and the left side of the popup.
This means, that the position is set in absolute relative to the window and will not update automatically when the GridView
is scrolled. Instead, you will have to update it manually by observing the scroll viewer events. First use the VisualTreeHelper
to find ScrollView
inside the GridView
:
public static ScrollViewer FindScrollViewer(DependencyObject d)
{
if (d is ScrollViewer) return d as ScrollViewer;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(d); i++)
{
var child = VisualTreeHelper.GetChild(d, i);
var result = FindScrollViewer(child);
if (result != null) return result;
}
return null;
}
You can use this helper method like this:
var scrollViewer = FindScrollViewer(MyGridView);
And now attach the scrollViewer.ViewChanged
or scrollViewer.ViewChanging
event and update the popup position as you see fit.
It work. thank you verry much
– Mr D
Nov 27 '18 at 2:55
add a comment |
As the documentation says, the Offset
properties set the position relative to the application window:
Gets or sets the distance between the left side of the application
window and the left side of the popup.
This means, that the position is set in absolute relative to the window and will not update automatically when the GridView
is scrolled. Instead, you will have to update it manually by observing the scroll viewer events. First use the VisualTreeHelper
to find ScrollView
inside the GridView
:
public static ScrollViewer FindScrollViewer(DependencyObject d)
{
if (d is ScrollViewer) return d as ScrollViewer;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(d); i++)
{
var child = VisualTreeHelper.GetChild(d, i);
var result = FindScrollViewer(child);
if (result != null) return result;
}
return null;
}
You can use this helper method like this:
var scrollViewer = FindScrollViewer(MyGridView);
And now attach the scrollViewer.ViewChanged
or scrollViewer.ViewChanging
event and update the popup position as you see fit.
As the documentation says, the Offset
properties set the position relative to the application window:
Gets or sets the distance between the left side of the application
window and the left side of the popup.
This means, that the position is set in absolute relative to the window and will not update automatically when the GridView
is scrolled. Instead, you will have to update it manually by observing the scroll viewer events. First use the VisualTreeHelper
to find ScrollView
inside the GridView
:
public static ScrollViewer FindScrollViewer(DependencyObject d)
{
if (d is ScrollViewer) return d as ScrollViewer;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(d); i++)
{
var child = VisualTreeHelper.GetChild(d, i);
var result = FindScrollViewer(child);
if (result != null) return result;
}
return null;
}
You can use this helper method like this:
var scrollViewer = FindScrollViewer(MyGridView);
And now attach the scrollViewer.ViewChanged
or scrollViewer.ViewChanging
event and update the popup position as you see fit.
answered Nov 26 '18 at 9:13
Martin ZikmundMartin Zikmund
26.1k63762
26.1k63762
It work. thank you verry much
– Mr D
Nov 27 '18 at 2:55
add a comment |
It work. thank you verry much
– Mr D
Nov 27 '18 at 2:55
It work. thank you verry much
– Mr D
Nov 27 '18 at 2:55
It work. thank you verry much
– Mr D
Nov 27 '18 at 2:55
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53477393%2fuwp-position-absolute-popup%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown