首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有办法在WinUI3中更改弹出的父内容?

是否有办法在WinUI3中更改弹出的父内容?
EN

Stack Overflow用户
提问于 2022-04-24 05:14:00
回答 1查看 72关注 0票数 0

在WinUI3中,您似乎无法修改工具提示的持续时间(类似于WPF允许在ToolTipService.ShowDuration中更改持续时间的方式)。

因此,我试图使用弹出控件复制该行为,这样只要鼠标悬停在元素上(利用元素的OnPointerEntered / OnPointerExited事件来修改弹出窗口的IsOpen属性),弹出窗口就将保持可见。

这将正确显示弹出窗口,但在我的示例中,弹出窗口存在于Grid中,而该弹出窗口位于ListViewListView.ItemTemplate中。ala:

代码语言:javascript
运行
复制
<ListView>
  <DataTemplate>
    <Grid>
      <TextBlock/>
      <Popup/>
    </Grid>
  </DataTemplate>
</ListView>

因此,弹出窗口仅覆盖<Grid>,但仍会在DataTemplate区域内被剪裁。

我希望弹出覆盖<ListView>本身--是否有一种方法可以指定弹出将覆盖哪些内容,从而覆盖<ListView>

或者更好--让它覆盖窗口的所有元素(复制工具提示的位置?)

EN

回答 1

Stack Overflow用户

发布于 2022-04-25 04:20:14

是否有一种方法可以更改WinUI3中弹出窗口的父内容?

当然,您可以在当前页面中将弹出设置在与ListView相同的级别。并侦听ListView、item、PointerEnteredPointerExited事件,然后将当前项数据文本传递给弹出控件。

Xaml

代码语言:javascript
运行
复制
<ListView
    Margin="0,10,0,45"
    ItemsSource="{x:Bind Items}"
    Visibility="Visible">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel
                Orientation="Vertical"
                PointerEntered="StackPanel_PointerEntered"
                PointerExited="StackPanel_PointerExited">
                <TextBlock x:Name="Id" Text="{Binding ID}" />
                <TextBox
                    x:Name="FirstName"
                    GettingFocus="FirstName_GettingFocus"
                    Text="{Binding FirstName}" />
                <TextBox x:Name="LastName" Text="{Binding LastName}" />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
<Popup
    x:Name="PopupTip"
    HorizontalAlignment="Center"
    VerticalAlignment="Center">
    <Popup.ChildTransitions>
        <TransitionCollection>
            <PaneThemeTransition Edge="Bottom" />
        </TransitionCollection>
    </Popup.ChildTransitions>

    <StackPanel
        Width="150"
        Height="80"
        Background="LightGray"
        CornerRadius="4">
        <TextBlock
            x:Name="InfoLabel"
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Text="{Binding ID}" />
    </StackPanel>
</Popup>

代码在中的应用

代码语言:javascript
运行
复制
private void StackPanel_PointerEntered(object sender, PointerRoutedEventArgs e)
{
    var ItemDataContext = (sender as FrameworkElement).DataContext;
    PopupTip.DataContext = ItemDataContext;
    PopupTip.IsOpen = true;
  
}

private void StackPanel_PointerExited(object sender, PointerRoutedEventArgs e)
{
    PopupTip.DataContext = null;
    PopupTip.IsOpen = false;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71985669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档