BringIntoView 不起作用

2024-04-17

我在事件处理程序后面有这段代码:

private void comboActiveStudentAssignmentType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    List<Border> borders = new List<Border>();

    // The list of border (focus rectangles) matches the combo of assignment types
    borders.Add(borderBibleReadingMain);
    borders.Add(borderBibleReadingClass1);
    borders.Add(borderBibleReadingClass2);
    borders.Add(borderMainHallStudent1);
    borders.Add(borderMainHallAssistant1);
    borders.Add(borderMainHallStudent2);
    borders.Add(borderMainHallAssistant2);
    borders.Add(borderMainHallStudent3);
    borders.Add(borderMainHallAssistant3);
    borders.Add(borderClass1Student1);
    borders.Add(borderClass1Assistant1);
    borders.Add(borderClass1Student2);
    borders.Add(borderClass1Assistant2);
    borders.Add(borderClass1Student3);
    borders.Add(borderClass1Assistant3);
    borders.Add(borderClass2Student1);
    borders.Add(borderClass2Assistant1);
    borders.Add(borderClass2Student2);
    borders.Add(borderClass2Assistant2);
    borders.Add(borderClass2Student3);
    borders.Add(borderClass2Assistant3);

    // Loop through the borders
    for(int iBorder = 0; iBorder < borders.Count; iBorder++)
    {
        // Is this border the active student assignment?
        if (comboActiveStudentAssignmentType.SelectedIndex == iBorder)
        {
            // Yes, so use a red brush for the background
            borders[iBorder].BorderBrush = Brushes.Red;

            // Now we must ensure the correct tab item is visible
            if(iBorder >= 0 && iBorder <= 2)
            {
                expandTFGW.IsExpanded = true;

                if (iBorder == 0)
                    tabTFGWReadingMainHall.IsSelected = true;
                else if (iBorder == 1)
                    tabTFGWReadingClass1.IsSelected = true;
                else if (iBorder == 2)
                    tabTFGWReadingClass2.IsSelected = true;
            }
            else if (iBorder >= 3 && iBorder <= 8)
            {
                expandAYFM.IsExpanded = true;
                tabAYFMStudentsMainHall.IsSelected = true;

                if (iBorder == 3 || iBorder == 4)
                    tabMainHallItem1.IsSelected = true;
                else if (iBorder == 5 || iBorder == 6)
                    tabMainHallItem2.IsSelected = true;
                else if (iBorder == 7 || iBorder == 8)
                    tabMainHallItem3.IsSelected = true;
            }
            else if (iBorder >= 9 && iBorder <= 14)
            {
                expandAYFM.IsExpanded = true;
                tabAYFMStudentsClass1.IsSelected = true;

                if (iBorder == 9 || iBorder == 10)
                    tabClass1Item1.IsSelected = true;
                else if (iBorder == 11 || iBorder == 12)
                    tabClass1Item2.IsSelected = true;
                else if (iBorder == 13 || iBorder == 14)
                    tabClass1Item3.IsSelected = true;
            }
            else if (iBorder >= 15)
            {
                expandAYFM.IsExpanded = true;
                tabAYFMStudentsClass2.IsSelected = true;

                if (iBorder == 15 || iBorder == 16)
                    tabClass2Item1.IsSelected = true;
                else if (iBorder == 17 || iBorder == 18)
                    tabClass2Item2.IsSelected = true;
                else if (iBorder == 19 || iBorder == 20)
                    tabClass2Item3.IsSelected = true;
            }

            borders[iBorder].BringIntoView();
        }
        else
        {
            // No, so set the background to transparent so we can't see it.
            borders[iBorder].BorderBrush = Brushes.Transparent;
        }
    }
}

}

其中之一的示例BorderXAML 中的对象:

<Border x:Uid="borderMainHallStudent1" x:Name="borderMainHallStudent1" BorderThickness="5">
    <Border.Style>
        <Style x:Uid="Style_30" TargetType="Border">
            <Setter x:Uid="Setter_76" Property="BorderBrush" Value="Transparent"/>
            <Style.Triggers>
                <DataTrigger x:Uid="DataTrigger_29" Binding="{Binding SelectedItem, ElementName=comboActiveStudentAssignmentType}" 
                         Value="{x:Static StudentInfoEnums:StudentAssignmentType.Student1Main}">
                    <Setter x:Uid="Setter_77" Property="BorderBrush" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
    <StackPanel x:Uid="StackPanel_35">
        <Label x:Uid="Label_38" Content="Student:"/>
        <Grid x:Uid="Grid_15">
            <Grid.ColumnDefinitions>
                <ColumnDefinition x:Uid="ColumnDefinition_34" Width="*"/>
                <ColumnDefinition x:Uid="ColumnDefinition_35" Width="auto"/>
            </Grid.ColumnDefinitions>
            <TextBox x:Uid="textMainHallStudent1" x:Name="textMainHallStudent1" 
                 Text="{Binding MainHallStudent1, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
                 IsEnabled="False" Grid.Column="0" Margin="2" />
            <Button x:Uid="buttonMainHallStudent1" x:Name="buttonMainHallStudent1" Grid.Column="1" Background="Transparent"
                DataContext="{Binding DataContext, ElementName=oclmEditor}"
                Command="{Binding ApplicationCommand}"
                CommandParameter="Student1Main">
                <Image x:Uid="Image_17" Source="Images/AssignmentTypeStudent16.png" Margin="2"/>
            </Button>
        </Grid>
        <Label x:Uid="Label_39" Content="Study:"/>
        <ComboBox x:Uid="ComboBox_9" DataContext="{Binding DataContext, ElementName=oclmEditor}"
              ItemsSource="{Binding StudentStudyPointsList}" 
              ItemContainerStyle="{StaticResource StudyPointComboBoxStyle}"
              ItemTemplate="{StaticResource StudyPointComboItem}"
              Validation.ErrorTemplate="{StaticResource StudyPointValidationTemplate}"
              Tag="{Binding Meeting.MainHallStudent1, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
              SelectedValue="{Binding Meeting.MainHallStudent1StudyNumber, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
              SelectedValuePath="Number"/>
    </StackPanel>
</Border>

这行代码:borders[iBorder].BringIntoView();这似乎不起作用。我的所有 Border 对象的颜色都设置正确,但程序显然没有尝试反对这行代码。

为您提供此内容的背景信息Border对象存在:

\\ Main Window
    \\ScrollView
       \\ Expander
          \\Tab Control
             \\Tab Item
                 \\Border 1
                    \\Contents
                 \\Border 2
                     \\Contents
       \\ Expander
          \\Tab Control
             \\Tab Item
                 \\Border 1
                    \\Contents
                 \\Border 2
                     \\Contents

BringIntoView(), 根据MSDN https://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.bringintoview(v=vs.110).aspx:

尝试在任何范围内将此元素带入视图可滚动的它所包含的区域。

因此,它不会选择选项卡项目、展开扩展器等。您需要自己执行这些操作。

请注意,由于调度程序的优先级队列,一旦您进行更改(例如选择一个选项卡),内容可能无法立即可用。在这种情况下,您可能希望以较低的优先级发布“进入视图”请求:

var localBorderIndex = iBorder; // copy to avoid closure of loop variable
Dispatcher.InvokeAsync(() => borders[localBorderIndex].BringIntoView(),
    DispatcherPriority.Background);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BringIntoView 不起作用 的相关文章

  • 有什么工具可以说明每种方法运行需要多长时间?

    我的程序的某些部分速度很慢 我想知道是否有我可以使用的工具 例如它可以告诉我可以运行 methodA 花了 100ms 等等 或者类似的有用信息 如果您使用的是 Visual Studio Team System 性能工具 中有一个内置分析
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • 为什么 FTPWebRequest 或 WebRequest 通常不接受 /../ 路径?

    我正在尝试从 ftp Web 服务器自动执行一些上传 下载任务 当我通过客户端甚至通过 Firefox 连接到服务器时 为了访问我的目录 我必须指定如下路径 ftp ftpserver com AB00000 incoming files
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • std::bind 重载解析

    下面的代码工作正常 include
  • C# 搜索目录中包含字符串的所有文件,然后返回该字符串

    使用用户在文本框中输入的内容 我想搜索目录中的哪个文件包含该文本 然后我想解析出信息 但我似乎找不到该字符串或至少返回信息 任何帮助将不胜感激 我当前的代码 private void btnSearchSerial Click object
  • OxyPlot WPF 不适用于按钮单击

    我在使用 OxyPlot 时遇到了一些问题 但无法通过他们的文档或其他搜索来解决 我正在开发一个 wpf 应用程序 它允许用户通过按钮单击事件打开 csv 然后执行一些数学运算并报告一些有用的信息 我想绘制一些生成的数据 因此使用 OxyP
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • WPF ListBox - 如何从数据表中放入值?

    I have ListBox并希望将值放入此列表框中DataTable listBoxVisibleFields DataContext SelectedFields Where SelectedFields is a DataTable充
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • 为什么我使用google'smtp'无法发送电子邮件?

    我有以下程序使用 smtp gmail com 587 发送电子邮件 namespace TestMailServer class Program static void Main string args MailMessage mail
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu

随机推荐

  • 从数据库上传模型时丢失数据注释

    我有一个大数据库现有数据库可以与之通信 并且我首先使用 EF 5 0 数据库 我遇到的问题是 如果我创建任何数据装饰 例如 stringlength 50 在课堂上 然后上传数据库 当我 从数据库上传 时 所有数据注释都消失了 我该怎么做才
  • 如何禁用/更改 ion-nav-view 中视图之间的动画

    我开始了一个 Ionic 选项卡项目 这个项目带来了视图之间的默认动画 进入时从左到右 返回时从右到左 我想通过指定两种类型的视图动画来保留对此的控制 从下到上 没有动画 到目前为止 我尝试按如下方式禁用动画 正如建议的那样离子论坛主题 h
  • Rails:渴望加载 as_json 包括

    render json gt playlist gt playlist description songs gt playlist songs as json include gt playlist songs gt only gt id
  • 在 Qt 中检查 QObject 派生类类型的正确方法

    假设我有两门课 class A public QObject class B public QObject 那我去 QObject a new A QObject b new B 现在 我如何确保 a 是A类的实例 而 b 是B类的实例 目
  • numpy.unique 生成的列表在哪些方面是唯一的?

    如果您输入一个包含一般对象的数组numpy unique 结果将是唯一的 基于什么 我努力了 import numpy as np class A object probably exists a nice mixin for this P
  • SQL Server 优先级排序

    我有一个包含任务的表 我想根据任务的优先级对这些任务进行明确的排序 我能想到的唯一方法是通过uniqueint 列 根据优先级对任务所在位置进行索引 即 1 为前 1000 为低 问题是 假设我想更新任务并将其优先级设置为较低的值 我将必须
  • Eclipse 插件导出时出现错误:“无法解析导入 javafx.embed.swt”

    我正在尝试导出 Eclipse 插件 这只是我从此处的示例创建的一个 Eclipse 视图 http help eclipse org mars index jsp nav 2F2 0 http help eclipse org mars
  • 如何使实体框架异步执行

    我在 ASP Net MVC 5 应用程序中遇到异步控制器问题 我正在使用 Entity Framework 6 Code First 方法 我有一个方法 public async Task
  • 如何使用 NPOI 设置 Excel 中的行高?

    如何使用 NPOI 在 C 中设置行高 为了指定列的宽度 我使用 XSSFSheet SetColumnWidth 但是单元格高度的命令是什么样的 尝试下面的方法 var row sheet CreateRow 0 row Height 1
  • 有没有类似 sed 的 cmd.exe 实用程序? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想使用 Windows 命令行以编程方式编辑文件内容 cmd exe http en wikiped
  • C++ 通用链表

    对于下面的代码 include
  • 使用 pip 在 Mac 上安装 Pandas

    我正在尝试安装Pandas with pip 但遇到了问题 详细信息如下 Mac OS Sierra which python gt usr bin python python version gt Python 2 7 10 Inside
  • OpenXml:确定 Excel 中单元格中的图像[重复]

    这个问题在这里已经有答案了 可能的重复 如何检查单元格是否有图片 https stackoverflow com questions 2320826 how to check if a cell has a picture OpenXML
  • 匹配条件时更改列值

    我需要更换一个NULL仅当其他条件匹配时列中的值 Columns Parent Child flag01 lag02 父栏目有很多NULL值 但我想替换null仅当flag01 and flag02是 好的 If flag01 and fl
  • 展平 RDD 中的 Scala 映射

    我有一个 RDD 如下所示 uidProcessedKeywords org apache spark rdd RDD Long Map String Double 如何展平 RDD 中的地图以获得以下结果 org apache spark
  • Flash AS3 - 如何访问其他帧(也称为非一帧)中的显示对象

    只要该子项位于第一帧中 getChildByName name 就会起作用 其他框架中的显示对象还没有被实例化 所以并不是说不能访问它们 它们不存在可供访问的地方 当播放头进入具有特定对象的关键帧时 会创建该对象并将其添加到舞台中 当播放头
  • Python 多线程

    我有这样的场景 使用 Zope Plone 和一些我的 python API 创建的网页 有一个网页 称之为 a 它通过 python 方法调用数据库 Postgres 并返回一些信息 在页面 a 上 您可以 离线 修改数 据库数据 我的意
  • 如何让 CBC 在时限内返回最佳解决方案? (皮莫)

    我正在尝试在 Pyomo 上使用 CBC v2 10 3 来解决整数线性问题 执行求解器时 我当前设置的时间限制为 600 秒 opt SolverFactory cbc opt options seconds 600 在这个时间限制内 求
  • 在Python中跳过范围函数中的值

    循环一系列数字并跳过一个值的Python式方法是什么 例如 范围是从 0 到 100 我想跳过 50 编辑 这是我正在使用的代码 for i in range 0 len list x listRow list i for j in ran
  • BringIntoView 不起作用

    我在事件处理程序后面有这段代码 private void comboActiveStudentAssignmentType SelectionChanged object sender SelectionChangedEventArgs e