如何在 kubernetes 中使用 yaml 文件删除并重新创建 pod
我有一个 yaml 文件,可以用来创建 pod。我正在使用仪表板,因此我只需选择 yaml 文件,它就会创建 Pod。 Pod 将启动容器,容器将运行 docker ...
CocoaPods 在 ios 目录中找不到 pod“FBSDKLoginKit”的兼容版本
我有 flutter 应用程序,运行命令时出现以下错误: pod install --repo-update 这是我收到的错误: [!] CocoaPods 找不到 pod 的兼容版本 &
我不知道使用什么命令来摆脱这种情况,我似乎有一个 pod 依赖循环,禁止我更新 pod 版本? 我如何清理整个项目并更新或...
如何解决 pod install 问题并成功运行 pod install?
在干净的 macOS Sonoma 安装并安装 Xcode 15.4 后,我在尝试为客户重新编译和构建项目时遇到了同样的问题。当我运行 pod install 时,我遇到了
我在我的flutter应用程序中添加了Pod Player插件作为播放youtube直播视频的依赖项。我对youtube播放器和iframe插件不满意,因为我使用了Pod播放器。我很满意...
无法让一个 Pod 与另一个 Pod 通信(Pod 间通信不起作用)
我正在管理 Kubernetes 集群,并希望 Pod1 对 Pod2 和 Pod3 进行 API 调用(但 Pod1 - Pod3 失败!): Pod1:用于测试连接的 Jupyter Notebook 环境。 Pod2:运行的 Express.js 应用程序...
React Material 选项卡方向在响应式中发生变化?
如何更改响应式材质选项卡方向变化?我正在使用 React Material 版本 4 我需要桌面响应式的orientation=“horizontal”,它应该是orientation=“
使用 xcode 12.0 的 cocoapod pod lib lint 框架构建失败
我尝试更新现有的 Pod,但是当我执行 pod trunk Push NAME.podspec 时,出现以下错误: 我尝试了这篇文章 Xcode 12 中的几种解决方案,为 iOS 模拟器构建,但在目标文件中链接
我正在运行一个包含 20 多个节点的 kubernetes 集群。命名空间中的一个 pod 重新启动。 Pod 由于 OOM 被终止,退出代码为 137,并按预期再次重新启动。但想知道...
如何公开在 Openshift pod 内运行的 Flask 应用程序
我创建了一个 Flask 应用程序,需要在 OCP pod 内运行。该 Pod 有一个 Python 容器,该应用程序是一个基本的 Flask 应用程序。 当我使用 python app.py 运行应用程序时,该应用程序暴露在 0.0.0.0:50...
使用 kubernetes python 客户端将文件从 pod 复制到主机
我需要使用 kubernetes python 客户端将文件从 pod 复制到主机。它类似于 kubectl cp pod:file file。 我正在测试以下代码:https://github.com/prafull01/Kuberne...
kubernetes 的 readinessProbe 会阻止启动期间的 Pod 间通信
来自 Kubernetes 文档: 包含报告未准备就绪的容器的 Pod 不会通过 Kubernetes 服务接收流量。 这是否意味着准备就绪探针支持失败...
如何监控容器/pod的CrashLoopBackOff状态?
我有一个 Kubernetes 集群设置,想使用 Datadog 来监控集群。我想设置一个监视器,以便在容器/pod 陷入 CrashLoopBackOff 状态时向我发出警报。 我该怎么办...
未找到 ReactNativePermissions pod 规范
所以我尝试运行一个用react-native编写的iOS应用程序项目,在克隆和npm安装之后,我在尝试在iOS文件夹中安装pod时遇到了问题。 这是错误: [!] 不
即使部署在 kubernetes pod 上,kafka 主题仍然是不可变的吗?
我在 kubernetes pod 上部署了 kafka 主题和模式注册表,我尝试修改/更改 kafka 主题和模式注册表的清单文件,然后模式注册表的行为在
无法让一个 pod 与另一个 pod 通信(Kubernetes 中的 ScrapyRT 通信不起作用)
我正在管理 Kubernetes 集群,并希望 Pod1 对 Pod2 和 Pod3 进行 API 调用(但 Pod1 - Pod3 失败!): Pod1:用于测试连接的 Jupyter Notebook 环境。 Pod2:运行的 Express.js 应用程序...
如何使用 helm 3 让我的应用程序 pod 在数据库 pod 之后运行
我对舵还很陌生,我有一些基本问题。我正在使用 Helm 3 部署 RoR 应用程序,并使用 postgresql 作为数据库。我已将数据库添加为
通过 helm 3 部署在 Kubernetes 上的 Openwhisk 中 Action Pod 的私有注册表
正如标题所示,我正在尝试使用 helm 3 在我的 kubernetes 集群上部署 openwhisk(并作为容器工厂),但我正在使用私有注册表来拉取操作 pod 映像,即 action-nod...
mongodb statefulset pod 在复制期间重新启动,没有任何有用的错误
我尝试在带有复制功能的 minikube 上运行 mongodb statefulset,但 Pod 不断重新启动,没有任何明显的原因。我已经到处搜索试图调试这个问题。以下是我的
Kubernetes - 查找没有内存限制的 Pod(或者其内存限制高于请求)
在我的 kubernetes 集群上,与我的内存请求相比,我的 Pod 占用了 15% (~4GB) 的额外 GB 内存。我怀疑这是我的一些节点最近崩溃的原因。我怎样才能...
问题: \[!\] CocoaPods 找不到 pod“libphonenumber_plugin”的兼容版本: 在 Podfile 中: libphonenumber_plugin(来自 \`.symlinks/plugins/libphonenumber_plugin/ios\`) ...
如何在 kubernetes 中将 pod 从一个节点移动到另一个节点
我有一个位于节点 N1 的 Pod P1。我需要将其移至另一个节点 N2。除了节点选择器之外,还有哪些不同的方法可以做到这一点? 节点选择器: 名称:N1
如何在 Cloud Composer 2 的 KerbenetesPodOperator 中指定非默认计算类
我正在 Cloud Composer 2 中使用 KurbenetesPodOperator 创建 pod 来执行 Spark 作业。 默认情况下,当您使用
当我运行 pod install 时,这些磨损就会出现。 [!] Runner [Debug] 目标会覆盖 Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig 中定义的 ENABLE_BITCODE 构建设置。这……
Cloud2Edge 包的 Eclipse Hono pod 中的准备失败
我有点绝望,希望有人能帮助我。几个月前,我按照安装说明在 kubernetes 集群上安装了 eclipse cloud2edge 包,创建了一个
是否可以获取指定时间段的Kubernetes日志? 我现在能做的就是使用 kubectl logs > dump.log cmd 转储单个 pod 的最后一小时日志。 但是...
为什么`kube-prometheus-stack`抱怨未找到秘密“prometheus-kube-prometheus-admission”
鉴于 ArgoCD v2.13.2 和 kube-prometheus-stack Helm Chart v67.3.1(以及两者的可能其他版本),ArgoCD 可能无法使用 kube-prometheus-stack-operator pod 安装图表,因为
在以下 xml 中,“message_entry”在小屏幕 (240 x 320) 上显示太窄,但在较大屏幕 (480 x 640) 上显示良好。 在以下 xml 中,“message_entry”在小屏幕 (240 x 320) 上显示太窄,但在较大屏幕 (480 x 640) 上显示良好。 <androidx.cardview.widget.CardView android:id="@+id/reply_bar_card" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardBackgroundColor="@color/replyBarCard" app:cardCornerRadius="24dp" app:cardElevation="5dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingBottom="24dp"> <ProgressBar android:id="@+id/send_progress" style="@style/Widget.AppCompat.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="3dp" android:indeterminate="true" android:visibility="invisible" /> <HorizontalScrollView android:id="@+id/attached_image_scroller" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="@dimen/message_list_padding" android:layout_marginEnd="@dimen/message_list_padding" android:paddingTop="8dp" android:paddingBottom="8dp" android:scrollbars="none" android:visibility="gone"> <LinearLayout android:id="@+id/attached_image_holder" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="12dp" android:layout_marginEnd="12dp" android:orientation="horizontal" /> </HorizontalScrollView> <LinearLayout android:id="@+id/smart_reply_container" android:layout_width="match_parent" android:layout_height="56dp" android:layout_marginStart="@dimen/message_list_padding" android:layout_marginEnd="@dimen/message_list_padding" android:gravity="end" android:orientation="horizontal" android:visibility="gone"> <ImageButton android:id="@+id/close_smart_replies" android:layout_width="32dp" android:layout_height="48dp" android:layout_gravity="center_vertical" android:layout_marginStart="8dp" android:background="?selectableItemBackgroundBorderless" android:clickable="true" android:contentDescription="@string/use_smart_replies" android:src="@drawable/ic_cancel" android:tint="@color/secondaryText" /> <LinearLayout android:id="@+id/smart_reply_suggestions_container" android:layout_width="0dp" android:layout_height="match_parent" android:layout_marginEnd="12dp" android:layout_weight="1" android:gravity="end" android:orientation="horizontal" /> </LinearLayout> <LinearLayout android:id="@+id/send_bar" android:layout_width="match_parent" android:layout_height="50dp" android:layout_marginStart="@dimen/message_list_padding" android:layout_marginEnd="@dimen/message_list_padding" android:alpha="0" android:clipToPadding="false" android:gravity="center_vertical|start" android:orientation="horizontal" android:padding="8dp" android:translationY="-32dp"> <ImageButton android:id="@+id/select_sim" android:layout_width="32dp" android:layout_height="48dp" android:background="?selectableItemBackgroundBorderless" android:clickable="true" android:contentDescription="@string/select_sim" android:src="@drawable/ic_sim" android:tint="@color/secondaryText" android:visibility="gone" /> <ImageButton android:id="@+id/view_scheduled_messages" android:layout_width="32dp" android:layout_height="match_parent" android:background="?selectableItemBackgroundBorderless" android:clickable="true" android:contentDescription="@string/view_scheduled_messages" android:src="@drawable/ic_schedule_small" android:tint="@color/secondaryText" android:visibility="gone" /> <FrameLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginEnd="8dp"> <ImageButton android:id="@+id/attach" android:layout_width="32dp" android:layout_height="48dp" android:layout_gravity="center_vertical|start" android:background="?selectableItemBackgroundBorderless" android:clickable="true" android:contentDescription="@string/attach" android:src="@drawable/ic_attach" android:tint="@color/secondaryText" /> <TextView android:id="@+id/text_counter" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom|center_horizontal" android:layout_marginBottom="2dp" android:gravity="center_horizontal" android:textColor="@color/secondaryText" android:textSize="12sp" /> </FrameLayout> <com.google.android.material.textfield.TextInputEditText android:id="@+id/message_entry" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@null" android:backgroundTint="@color/drawerBackground" android:hint="@string/type_message_to" android:imeOptions="actionSend|flagNoExtractUi" android:inputType="textCapSentences|textAutoCorrect|textMultiLine" android:maxLines="@integer/message_list_fragment_line_entry_count" android:minHeight="40dp" android:padding="8dp" android:paddingStart="8dp" android:paddingEnd="18dp" android:scrollHorizontally="false" android:textSize="16sp" /> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" android:contentDescription="@string/send_message" android:src="@drawable/ic_send" app:elevation="0dp" app:fabSize="mini" app:rippleColor="@android:color/white" /> </LinearLayout> <ViewStub android:id="@+id/attach_stub" android:layout_width="match_parent" android:layout_height="@dimen/attach_menu_height" android:layout="@layout/view_attach_menu" /> </LinearLayout> </androidx.cardview.widget.CardView> 小屏幕:(添加红框用于说明) 大屏幕:(添加红框作为说明) 预期的行为就像大屏幕,其中“message_entry”尽可能宽。为什么“message_entry”在小屏幕上那么窄?我该如何解决它? 原来是因为dimens.xml文件夹下有多个res文件造成的。这用于支持多种屏幕尺寸,在较小屏幕的 dimens.xml 中,有 <dimen name="message_list_padding">96dp</dimen>。一旦更改为0dp,布局就如预期的那样。 有关多个 dimens.xml 文件的更多信息,请参阅此答案中的#2。
我有一个 Docker 卷,它是 PostgreSQL 容器的快照。我想将此卷应用到 Kubernetes Pod 中的 PostgreSQL 容器。有什么方法可以做到这一点吗? 仅供参考,我正在使用他...
使用 @aws-sdk/client-sqs npm 包从 EKS 集群 pod 推送到 AWS SQS 时出错
我在 AWS EKS 集群中使用 @aws/client-sqs npm 包将消息推送到标准 SQS 队列并收到以下错误: CredentialsProviderError:169.254.170.23 不是有效的容器我...
使用 Helm 在 AWS EBM 中设置 Kubernetes 有状态集存储
我正在使用 Helm 部署一个有状态集,但 Pod 抱怨容量问题。 使用 AWS EBS 执行此操作的正确方法是什么?考虑 Helm 模板。 警告调度 30 秒失败...
我已经docker化了一个简单的Spring Boot Rest api应用程序,其中列出了 /employee 端点的员工。 我创建了一个舵图并使用图像更新了values.yml 名称,服务类型为否...
如何通过适用于 iOS 的 React Native 环境设置来安装 Boost?
我目前正在尝试在 React Native 版本 0.73 中启动一个项目,但是当我在 iOS 目录中进行 pod install 时遇到问题,特别是安装 Boost 版本 1.83.0 时。 (节点:6...
RN 0.73.2 Xcode 15 构建目标 Hermes-engine:命令 PhaseScriptExecution 失败,退出代码非零
我再次运行我的项目后遇到以下问题,pod安装成功没有任何问题,但是当使用yarn run ios命令运行时,出现如下错误,有什么...
无法使用 GKE 集群中的 VPC 对等互连连接到 GCP 中的 Mongo Atlas
问题:我在 GKE 中的应用程序无法通过 VPC 对等互连与 mongo Atlas 连接,但是如果我使用 mongodb+srv://cluster0-pri.mongodb.net/test 从 GkE 集群中的 pod 手动运行 mongosh - -
连接到 Kubernetes SQL Server Pod。本地测试。内部连接致命错误
我有用于 SQL Server 部署的 yaml 文件。我可以从我的主机访问数据库服务器并查询主数据库。我可以在 SSMS 中使用 localhost,30000 进行连接。 然后我创建了...
flutter:在调试模式下构建时运行 pod install 需要很长时间
使用 iPhone 11 iOS-14 设备和模拟器,我删除了 Flutter 应用程序的 podfile 和 podlock,并尝试在调试模式下重建应用程序,我正在使用最新的 firebase 依赖项,包括...
如何在 Kubernetes 中配置 Express 应用程序以使用出口 Droplet 进行 MongoDB Atlas 连接
我正在尝试设置在 Kubernetes pod 中运行的 Express.js 应用程序以连接到 MongoDB Atlas 数据库。我已经设置了一个出口 Droplet 来控制和记录来自 cl 的出站流量...
尝试使用 Java 复制文件时出现“java.nio.file.NoSuchFileException”错误
我有一个功能,可以将文件从一个地方复制到另一个临时文件,然后重命名该临时文件。它是一个部署在 kubernetes pod 中的 spring-boot 应用程序。 公共无效副本(最终路径
我正在尝试使用自动 IReference 到可见性转换将可见性绑定到 ToggleButton::IsChecked 我正在尝试使用自动 IReference 到可见性转换将可见性绑定到 ToggleButton::IsChecked <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <CheckBox x:Name="myButton" Content="Click Me" /> <TextBlock Text="Hello" Visibility="{x:Bind myButton.IsChecked, Mode=OneWay}"/> </StackPanel> 在空白项目中这是可行的。在我现有的项目中,如果我提供自己的转换器,它就会工作,但如果我尝试使用自动转换,我会得到: error C3779: 'winrt::impl::consume_Windows_Foundation_IReference< winrt::Windows::Foundation::IReference<bool>,T>::Value': a function that returns 'auto' cannot be used before it is defined with [ T=bool ] (compiling source file Generated Files\XamlTypeInfo.g.cpp) 如果针对 c++17 进行编译,错误就会消失。我正在为 c++20 编译 https://github.com/microsoft/microsoft-ui-xaml/issues/9214
即使文件是在上一行中创建的,也会出现“java.nio.file.NoSuchFileException”错误
我有一个功能,可以将文件从一个地方复制到另一个临时文件,然后重命名该临时文件。它是一个部署在 kubernetes pod 中的 spring-boot 应用程序。 公共无效副本(最终路径
绑定了formControlName后,如何在html中使用它?
我当前有问题的 html 部分是这样的 ... 我的 html 当前有问题的部分是这个 <div class="psi-list"> <div class="flex-row" *ngFor="let item of psiList; index as i"> <p class="row-psi">{{ item.psi }}</p> <button class="icon-btn" (click)="deletePsi(item.psi)"><i class="cil-trash"></i></button> <button class="icon-btn" (click)="item.toggle = !item.toggle"><i class="cil-pen-alt"></i></button> <form [formGroup]="psiEditForm" id="psi-edit-form" class="form-horizontal" [hidden]="!item.toggle"> <input class="psi-input" type="text" placeholder="Update PSI here..." [(ngModel)]="psiEdit" [ngClass]="{'is-valid': !checkControlValidation(psiEditForm.controls.psi) && psiEditForm.controls.psi.touched, 'is-invalid': checkControlValidation(psiEditForm.controls.psi)}" (keydown.enter)="!psiEditForm.controls.psi.invalid ? editPsi(item.psi) : clearPsiEdit()" formControlName="psi" /> <div class="help-block validation-warning" *ngIf="checkControlValidation(psiEditForm.controls.psi)"><i class="fa fa-exclamation fa-lg"></i>Please Enter a Valid 2 Letter PSI</div> </form> </div> </div> 我使用 formControlName“psi”将控件传递给 .ts 文件中的 checkControlValidation 方法。然而,这会导致功能问题。每当我在一个输入框中输入内容时,它都会将其输入到 *ngFor 中的所有输入框中。 当我将表单控件名称更改为这个时 - [formControlName]="item.psi" 它将名称绑定到与其相关的项目,因此理论上我可以通过它来解决我的问题。但是,当我将 psiEditForm.controls.psi 的所有实例更改为 psiEditForm.controls.item.psi 时,我收到很多 TS2339 错误。 我有什么想法可以使用它吗?抱歉,我知道这可能措辞很糟糕 尝试这样 <div class="psi-list"> <div class="flex-row" *ngFor="let item of psiList; index as i"> <p class="row-psi">{{ item.psi }}</p> <button class="icon-btn" (click)="deletePsi(item.psi)"><i class="cil-trash"></i></button> <button class="icon-btn" (click)="item.toggle = !item.toggle"><i class="cil-pen-alt"></i></button> <form [formGroup]="psiEditForm" id="psi-edit-form" class="form-horizontal" [hidden]="!item.toggle"> <input class="psi-input" type="text" placeholder="Update PSI here..." [(ngModel)]="psiEdit" [ngModelOptions]="{standalone: true}" [ngClass]="{'is-valid': !checkControlValidation(psiEditForm.controls.psi) && psiEditForm.controls.psi.touched, 'is-invalid': checkControlValidation(psiEditForm.controls.psi)}" (keydown.enter)="!psiEditForm.controls.psi.invalid ? editPsi(item.psi) : clearPsiEdit()" formControlName="psi" /> <div class="help-block validation-warning" *ngIf="checkControlValidation(psiEditForm.controls.psi)"> <i class="fa fa-exclamation fa-lg"></i>Please Enter a Valid 2 Letter PSI </div> </form> </div> </div>
向现有节点池添加节点与在 GKE 中的同一集群中创建具有相同版本的新节点池的区别
我遇到了应用程序 EOL 版本之一的问题,该应用程序失败并出现错误“无法获取容器 ID”。应用程序 pod 在 1.26.8 GKE 版本上运行良好,但它...
当我的用例限制我按创建顺序处理消息且只能处理一次消息时,SQS FIFO 队列是否可以有多个使用者?
我有一个将从 SQS 队列中使用的服务,并且该服务的多个实例将在 EC2 或 Kubernetes Pod 上并行运行,以避免单点故障,现在我的队列是...
在 HTML 而非 PHP 的源代码或 Web 开发人员中隐藏表单操作 [重复]
我的服务器上有 ilias lms 网站,但我们想在源代码和 Web 开发人员中隐藏表单操作名称,对此问题有任何解决方案吗?它是 html 文件。 我的服务器上有 ilias lms 网站,但我们想在源代码和 Web 开发人员中隐藏表单操作名称,对此问题有任何解决方案吗?它是 html 文件。 <form id="form_" role="form" class="form-horizontal preventDoubleSubmission" name="formlogin" action="ilias.php?lang=en&client_id=renv1&cmd=post&cmdClass=ilstartupgui&cmdNode=xv&baseClass=ilStartUpGUI&rtoken=" method="post" novalidate="novalidate"> 选项1(推荐): 为此使用 PHP 会话,您可以像这样存储所有必需的变量: <?php $_SESSION['lang'] = 'en'; $_SESSION['client_id'] = 'renv1'; ... ?> 现在表单的操作可以是“ilias.php”,在该文件中您可以取回您的值: <?php $lang = $_SESSION['lang']; ... ?> 不要忘记验证和清理您的输入,例如,如果“lang”只能是“en”和“fr”,您应该检查这一点。 选项2: 序列化变量并将其放入操作中: <?php $action_parameters = ['lang' => 'en', 'client_id' => 'renv1']; $action = 'ilias.php?parameters='.\serialize($action_parameters); ?> 提交后,您可以反序列化参数。
所以我有一张垫子桌 所以我有一张垫子桌 <mat-table class="table" cdkDropList cdkDropListOrientation="horizontal" (cdkDropListDropped)="tableDrop($event)" [dataSource]="tableDataSource"> <ng-container *ngFor="let column of columns; let i = index" [matColumnDef]="column.name"> <mat-header-cell *matHeaderCellDef cdkDrag dkDragLockAxis="x" cdkDragBoundary="mat-header-row"> {{ column.title }} </mat-header-cell> <mat-cell *matCellDef="let element"> {{ element[column.name] }} </mat-cell> </ng-container> <mat-header-row class="tableHeader" *matHeaderRowDef="tableDisplayedColumns" #tableHeaderRow> </mat-header-row> <mat-row class="tableRow" *matRowDef="let row; columns: tableDisplayedColumns;" [class.selected-row]="tableSelectedRows.has(row)" (click)="selectUnselectRow(row)"> </mat-row> </mat-table> 但我需要在表标题下为相应的行过滤器添加一行。我尝试在标题和实际行声明之间添加 <mat-row> ,但是由于过滤器是不同的输入(例如数字、自动完成选择和多选),我无法 *ngFor 它们(而且我不是当然我是否能够) 编辑:忘记发布过滤器 HTML <div class="filterGroup"> <mat-form-field class="filterField"> <input matInput type="number" (keydown)="updateManualPage(1)" placeholder="Filter za param1" formControlName="filterParam1"> </mat-form-field> <mat-form-field class="filterField"> <input matInput (keydown)="updateManualPage(1)" placeholder="Filter za param2" formControlName="filterParam2" [matAutocomplete]="autoSingleSelect"> <mat-autocomplete #autoSingleSelect="matAutocomplete" class="filterSelect" panelClass="filterSelect"> <mat-option *ngFor="let option of dropdownSingleFilteredOptions | async" [value]="option.param2"> {{option.param2}} </mat-option> </mat-autocomplete> </mat-form-field> <mat-form-field class="filterField"> <mat-select class="filterMultiselect" placeholder="Filter za param3" formControlName="filterParam3" multiple panelClass="filterMultiselect"> <mat-option *ngFor="let option of tableDataSource.data" [value]="option.param3"> {{option.param3}} </mat-option> </mat-select> </mat-form-field> </div> 以及相关组件.ts tableDisplayedColumns: string[] = ['param1', 'param2', 'param3']; columns: any[] = [ { name: 'param1', title: 'Param1' }, { name: 'param2', title: 'Param2' }, { name: 'param3', title: 'Param3' } ]; 为了解决这个问题,我设法通过删除 *ngFor 并手动放入过滤器来做到这一点。 <mat-table class="table" cdkDropList cdkDropListOrientation="horizontal" (cdkDropListDropped)="tableDrop($event)" [dataSource]="tableDataSource"> <ng-container matColumnDef="param1"> <mat-header-cell *matHeaderCellDef cdkDrag cdkDragLockAxis="x" cdkDragBoundary="mat-header-row" [cdkDragStartDelay]="100"> Param1 <mat-form-field class="filterField"> <input matInput type="number" (keydown)="updateManualPage(1)" placeholder="Filter" formControlName="filterParam1"> </mat-form-field> </mat-header-cell> <mat-cell *matCellDef="let data"> <span>{{data.param1}}</span> </mat-cell> </ng-container> <ng-container matColumnDef="param2"> <mat-header-cell *matHeaderCellDef cdkDrag cdkDragLockAxis="x" cdkDragBoundary="mat-header-row" [cdkDragStartDelay]="100"> Param2 <mat-form-field class="filterField"> <input matInput (keydown)="updateManualPage(1)" placeholder="Filter" formControlName="filterParam2" [matAutocomplete]="autoSingleSelect"> <mat-autocomplete #autoSingleSelect="matAutocomplete" class="filterSelect" panelClass="filterSelect"> <mat-option *ngFor="let option of dropdownSingleFilteredOptions | async" [value]="option.param2"> {{option.param2}} </mat-option> </mat-autocomplete> </mat-form-field> </mat-header-cell> <mat-cell *matCellDef="let data"> <span>{{data.param2}}</span> </mat-cell> </ng-container> <ng-container matColumnDef="param3"> <mat-header-cell *matHeaderCellDef cdkDrag cdkDragLockAxis="x" cdkDragBoundary="mat-header-row" [cdkDragStartDelay]="100"> Param3 <mat-form-field class="filterField"> <mat-select class="filterMultiselect" placeholder="Filter" formControlName="filterParam3" multiple panelClass="filterMultiselect"> <mat-option *ngFor="let option of tableDataSource.data" [value]="option.param3"> {{option.param3}} </mat-option> </mat-select> </mat-form-field> </mat-header-cell> <mat-cell *matCellDef="let data"> <span>{{data.param3}}</span> </mat-cell> </ng-container> <mat-header-row class="tableHeader" *matHeaderRowDef="tableDisplayedColumns" #tableHeaderRow> </mat-header-row> <mat-row class="tableRow" *matRowDef="let row; columns: tableDisplayedColumns;" [class.selected-row]="tableSelectedRows.has(row)" (click)="selectUnselectRow(row)"> </mat-row> </mat-table>
我有一个 UserControl,用作窗口对话框的“模板”。 它包含一个关闭按钮和一个取消按钮。 我有一个 UserControl,用作窗口对话框的“模板”。 它包含一个关闭按钮和一个取消按钮。 <UserControl x:Class="TombLib.WPF.Controls.WindowControlButtons" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:TombLib.WPF.Controls" mc:Ignorable="d" xmlns:darkUI="clr-namespace:DarkUI.WPF;assembly=DarkUI.WPF" xmlns:vm="clr-namespace:TombLib.WPF.ViewModels" xmlns:sg="clr-namespace:SpacedGridControl;assembly=SpacedGridControl" d:DesignHeight="100" d:DesignWidth="300" x:Name="root"> <StackPanel VerticalAlignment="Center" HorizontalAlignment="Right" Height="Auto" Orientation="Horizontal"> <Button Name="oKButton" Margin="{x:Static darkUI:Defaults.MediumThickness}" Width="100" Height="Auto" Command="{Binding Close}" CommandParameter="{Binding Window}" Content="OK"></Button> <Button Name="cancelButton" Margin="{x:Static darkUI:Defaults.MediumThickness}" Width="100" Height="Auto" Command="{Binding Path=Cancel}" CommandParameter="{Binding Window}" Content="Cancel"></Button> </StackPanel> </UserControl> public partial class WindowControlButtons : UserControl { public static readonly DependencyProperty CancelProperty = DependencyProperty.Register( nameof(Cancel), typeof(ICommand), typeof(WindowControlButtons), new PropertyMetadata(null)); public ICommand Cancel { get { return (ICommand)GetValue(CancelProperty); } set { SetValue(CancelProperty, value); } } public static readonly DependencyProperty CloseProperty = DependencyProperty.Register( nameof(Close), typeof(ICommand), typeof(WindowControlButtons), new PropertyMetadata(null)); public ICommand Close { get { return (ICommand)GetValue(CloseProperty); } set { SetValue(CloseProperty, value); } } public static readonly DependencyProperty WindowParameter = DependencyProperty.Register( nameof(Window), typeof(object), typeof(WindowControlButtons), new PropertyMetadata(null)); public object? Window { get { return GetValue(WindowParameter); } set { SetValue(WindowParameter, value); } } public WindowControlButtons() { InitializeComponent(); } } 我想在以下窗口中使用它: <Window x:Class="TombLib.WPF.Windows.SelectIdWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:TombLib.WPF.Windows" mc:Ignorable="d" xmlns:ctrl="clr-namespace:TombLib.WPF.Controls" xmlns:vm="clr-namespace:TombLib.WPF.ViewModels" xmlns:sg="clr-namespace:SpacedGridControl;assembly=SpacedGridControl" xmlns:darkUI="clr-namespace:DarkUI.WPF;assembly=DarkUI.WPF" Title="SelectIdWindow" Height="100" Width="300" d:DataContext="{d:DesignInstance Type=vm:SelectIdViewModel }" x:Name="Self"> <sg:SpacedGrid Margin="{x:Static darkUI:Defaults.MediumThickness}"> <!-- REDACTED --> <ctrl:WindowControlButtons DataContext="{Binding ElementName=Self}" Window="{Binding ElementName=Self, Mode=OneWay}" Close="{Binding CloseCommand,Mode=OneWay}" Cancel="{Binding CancelCommand,Mode=OneWay}" Height="Auto" Width="Auto" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Right"/> </sg:SpacedGrid> </Window> public partial class SelectIdWindow : Window { public ICommand? CloseCommand { get; set; } public ICommand? CancelCommand { get; set; } public SelectIdWindow() { CloseCommand = new WindowCloseCommand(); InitializeComponent(); } } public class SelectIdViewModel { public string RequestedId { get; set; } = string.Empty; public IEnumerable<string> TakenIds { get; set;} public SelectIdViewModel(IEnumerable<string> takenIDs) { TakenIds = takenIDs; } } 但是,当我打开窗口时如下: SelectIdWindow w = new SelectIdWindow(); var takenIDs = Entities.Select(kv => kv.Key.Name); w.DataContext = new SelectIdViewModel(takenIDs); w.ShowDialog(); 我在绑定 WindowControlButtons 时收到以下错误: DataContext 显式设置为 Self,它应该代表 Window,而不是 ViewModel。我在这里做错了什么? 绑定错误表明问题出在 Button.ICommand 属性上: 要修复此问题,请在 WindowControlButtons 绑定中添加 ElementName=root,以便绑定到声明的依赖项属性而不是 DataContext: <UserControl x:Class="TombLib.WPF.Controls.WindowControlButtons" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:TombLib.WPF.Controls" mc:Ignorable="d" xmlns:darkUI="clr-namespace:DarkUI.WPF;assembly=DarkUI.WPF" xmlns:vm="clr-namespace:TombLib.WPF.ViewModels" xmlns:sg="clr-namespace:SpacedGridControl;assembly=SpacedGridControl" d:DesignHeight="100" d:DesignWidth="300" x:Name="root"> <StackPanel VerticalAlignment="Center" HorizontalAlignment="Right" Height="Auto" Orientation="Horizontal"> <Button Name="oKButton" ... Command="{Binding Close, ElementName=root}" CommandParameter="{Binding Window, ElementName=root}" Content="OK"/> <Button Name="cancelButton" ... Command="{Binding Path=Cancel, ElementName=root}" CommandParameter="{Binding Window, ElementName=root}" Content="Cancel"/> </StackPanel> </UserControl>