user-controls 相关问题

UserControl是一个独立的可重用输入控件,允许用户与应用程序进行交互。用户控件可以是按钮,复选框,输入文本框,鼠标,键盘等。

WPF:具有多个子视图的视图

我正在尝试在 WPF 中组合一个具有子视图的控件。 子视图的数量(可以增加或减少)从 1 到 10。我希望主视图能够显示这一点。 如果可以的话我愿意

回答 1 投票 0

调整窗体大小时,如何将 TableLayoutPanel、Windows 窗体中的复选框居中?

我有一个用户控件。其中我有一个带有列和行的 TableLayoutPanel 控件。在单元格中,我有基本的 Windows 窗体控件,如文本框、组合框和复选框。 对于前两个,如果...

回答 2 投票 0

WPF:如何创建呈现作为内容传递的控件的 UserControl

我正在尝试创建“Expander”用户控件,以方便隐藏(折叠)另一个用户界面。 现在我有这个: 扩展器用户控件 - XAML: 我正在尝试创建“Expander”用户控件,以方便隐藏(折叠)另一个 UI。 现在我有这个: 扩展用户控件 - XAML: <StackPanel> <TextBlock Text="{Binding Caption, ElementName=root}"/> <ToggleButton Content="{Binding ToggleText}" IsChecked="{Binding Expanded}"/> <ContentControl Visibility="{Binding Expanded, Converter={x:Static root:GlobalConverters.BoolToCollapsedVisibilityConverter}}" Content="{Binding Content, ElementName=root}" /> </StackPanel> 扩展用户控件 - 代码隐藏: public Expander() { InitializeComponent(); DataContext = new ViewModels.ExpanderViewModel(); } public static readonly DependencyProperty CaptionProperty = DependencyProperty.Register("Caption", typeof(string), typeof(Expander), new PropertyMetadata("unkown caption")); public string Caption { get => (string)GetValue(CaptionProperty); set => SetValue(CaptionProperty, value); } public new static readonly DependencyProperty ContentProperty = DependencyProperty.Register("ItemsSource", typeof(object[]), typeof(Expander), new PropertyMetadata(Array.Empty<EmptyContent>())); public new object[] Content { get => (object[])GetValue(ContentProperty); set => SetValue(ContentProperty, value); } 扩展器使用 - 查看: <DataTemplate DataType="{x:Type viewModels:OrdersListModeViewModel}"> <StackPanel> <controls:Expander Caption="Orders"> <ItemsControl ItemsSource="{Binding Orders}" /> </controls:Expander> </StackPanel> </DataTemplate> 我面临两个问题: 设计师正在显示此错误屏幕: 我尝试删除 obj 和 bin 目录,但没有帮助。 我在 Expander.xaml 中遇到绑定错误: 我不明白为什么“controls:Expander”元素内容不使用自己的数据上下文 正如已经建议的,您必须覆盖 ControlTemplate,以便控件的客户端可以使用 Content 属性来定义您想要托管的实际内容。然后您只需切换 ContentPresenter 的可见性即可。 要启用自定义,我建议创建一个扩展 HeaderedContentControl 的自定义控件,而不是使用 UserControl。 HeaderedContentControl 为您提供 Header 属性和 Content 属性 - 正是您想要的。 但是,因为已经有一个框架 Expander 控件(也扩展了 HeaderedContentControl),所以您应该扩展 Expander 并向现有控件添加其他功能: MyExpander.cs 每个控件绝不能依赖于其数据上下文。控件必须与数据上下文无关。如果您需要外部数据,则必须通过公共依赖属性请求它。内部元素将绑定到这些依赖属性以获取其数据。 这样,控件的客户端就可以完全控制 DataContext,并且能够通过数据绑定提供所需的数据 - 不会出现任何意外(例如,绑定失败,因为控件内部更改了 DataContext!)。 class MyExpander : Expander { static MyExpander() { // You can remove this if you only need to add behavioral functionality // but want to keep the original visuals and visual states. FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata( typeof(MyExpander), new FrameworkPropertyMetadata(typeof(MyExpander))); } // TODO::Add new functionality to the existing Expander } Generic.xaml 示例模板。仅当从静态构造函数显式覆盖默认样式时才需要。您可以看到 ContentPresenter is collapsed or visible based on the Expander.IsExpanded` 属性如何: <Style TargetType="{x:Type local:ExportManagerDialogStyle}"> <Style.Resources> <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> </Style.Resources> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:ExportManagerDialogStyle}"> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition /> </Grid.RowDefinitions> <TextBlock Grid.Row="0" Text="{TemplateBinding Header}" /> <ContenPresenter Grid.Row="1" Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsExpanded, Converter={StaticResourtce BooleanToVisibilityConverter}}" /> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> MainWindow.xaml <Window> <!-- Either inherit or explicitly set the DataContext --> <MyExpander DataContext="{ExpanderViewModel}" Header="Expandable content" IsExpanded="True"> <ListBox /> </MyExpander>

回答 1 投票 0

WPF Window.Close() 不触发 UserControl.Unloaded 事件

我有一个包含自定义用户控件的窗口。 UserControl 需要知道包含它的窗口何时关闭,以便它可以终止线程。 我对如何住宿的最佳猜测...

回答 4 投票 0

docker run hello-world docker:无法连接到位于 unix:///home/hexa/.docker/desktop/docker.sock 的 Docker 守护进程。 docker 守护进程是否正在运行

我有 ubuntu 22.04 并有一个管理员帐户和一个普通用户帐户。通过编辑文件(sudo visudo)授予普通用户访问 sudo docker 命令的权限 尝试了一些命令 但是...

回答 1 投票 0

停止对用户控件进行索引

为了遵守 cookie 法,我创建了一个用户控件,该控件添加到 asp.net 中的各个页面。用户控件基本上是出现在 div 中的 cookie 消息。问题是

回答 1 投票 0

在 WinForms 中点击按钮生成标签

我希望每次在用户控件上单击按钮时都会生成一个标签 - 下面是单击按钮时调用的方法: 私人无效按钮1_Click(对象发送者,

回答 2 投票 0

UserControl 中整个对象的 WPF 数据绑定

我有一个关于数据绑定的问题。 我使用 ViewModel 创建了一个 WPF 应用程序。在这个 viewModel 中,我有一个来自我编写的类的对象,其中包含多个属性。我想要

回答 1 投票 0

如何在继承的TextBox中保留Font?

我使用以下代码来获取未绘制边框的 TextBox: 公共部分类 CustomTextBox : TextBox { 公共自定义文本框() { 初始化组件();

回答 5 投票 0

Genexus 18 用户控制上传文件冻结多个文件

当我尝试使用用户控件上传多个文件时,它冻结并且无法上传。如果我取消列表中文件的上传并只保留一个,则上传不会出现任何问题。它只是...

回答 1 投票 0

元素“X”不是已知元素 - Web 应用程序

我将表单网站转换为应用程序,到目前为止一切都运行良好。我不断收到绿色波浪线和元素“X”不是已知元素的错误。 ...

回答 5 投票 0

如何让智能手机像滚动一样滚动winforms触摸屏应用程序(滚动面板)

在网上搜索文章后,我想出了一个基于 winforms 的触摸屏应用程序的设计,该应用程序需要像智能手机一样滚动。该应用程序本身将在平板电脑、笔记本电脑或触摸屏上运行

回答 7 投票 0

暴露底层控件的事件

我在自定义控件中有一个组合框。如何将其中的特定事件(例如 SelectedIndexChanged 或 KeyPress 等)公开给实现我的自定义控件的任何人/事物?

回答 4 投票 0

C# WPF:将 UserControl 放入 DataGridRow

我正在用 C# 创建一个 WPF 应用程序。在我的窗口中有一个数据网格。网格中有 2 列。第一列仅包含字符串。在第二列中,我想显示我创建的用户控件...

回答 3 投票 0

如何创建自定义 avalonia 控件

我正在学习 Avalonia,通过阅读文档我无法弄清楚这一点。 假设我想创建一个自定义用户控件,以便于在触摸屏上输入数字。 我哦...

回答 1 投票 0

如何将用户控件添加到.NET Core的Windows窗体设计器控件工具箱?

我正在使用 Visual Studio 2022,尝试将一些可以添加到 Windows 窗体设计器的组件和用户控件从 NET Framework 4.8 迁移到 NET Core 6 的 Windows 窗体设计器

回答 1 投票 0

如何部署对cs文件(ascx.cs)进行更改的单个用户控件

我有一个用户控件 (UserControl1.ascx),我对其 .cs 文件进行了更改。 UserControl1.ascx 正在被两个或多个使用 LoadControl 的 aspx 文件使用。 我不想部署整个网络

回答 2 投票 0

为用户控件中的项目/控件设置工具提示

我尝试为我创建的自定义用户控件设置工具提示。 UserControl 包含一个文本框和周围的画布区域。这样做的原因是为了产生垂直的错觉......

回答 1 投票 0

GridViewColumn 调整大小不适用于 UserControl

我有一个 WPF ListView,它使用 GridViewColumns 作为其各个列。 我有一个 WPF ListView,它使用 GridViewColumns 作为其各个列。 <ListView Name="LvArticles" Grid.Column="0" Grid.Row="3" MinWidth="800" ItemsSource="{Binding SearchResults}" SelectedItem="{Binding SearchResultsSelectedItem}" IsSynchronizedWithCurrentItem="True" Margin="3"> <ListView.View> <GridView> <GridView.Columns> <GridViewColumn Header="Distance" DisplayMemberBinding="{Binding Distance}"></GridViewColumn> <GridViewColumn Header="Ident" DisplayMemberBinding="{Binding Article.Ident}"></GridViewColumn> <GridViewColumn Header="Beschreibung"> <GridViewColumn.CellTemplate> <DataTemplate DataType="{x:Type models:ArticleSearchResult}"> <helpers:FormattedTextControl Text="{Binding Article.DescriptionLong2}" HighlightText="{Binding OriginalMpn}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> <!--<GridViewColumn Header="Beschreibung" DisplayMemberBinding="{Binding Article.DescriptionLong2}"></GridViewColumn>--> </GridView.Columns> </GridView> </ListView.View> </ListView> 如您所见,为了进行调试,我必须使用 GridViewColumns(当前已注释掉其中一个)来显示文本 Article.DescriptionLong2。 每当结果集发生变化时,我都会使用以下代码调整所有列的大小: c.Width = 0; //set it to no width c.Width = double.NaN; //resize it automatically 只要我使用 DisplayMemberBinding 行,这就有效。 现在我有一个自定义用户控件,基本上是这样构建的 <UserControl x:Class="GrafBomBuilder.Helpers.FormattedTextControl" 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" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800" > <Grid Name="Stack" HorizontalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="{Binding Part1}" /> <TextBlock Grid.Column="1" Text="{Binding Part2}" Foreground="Red" /> <TextBlock Grid.Column="2" Text="{Binding Part3}" /> </Grid> </UserControl> 如果我使用用户控件而不是 DisplayMemberBinding(后者应该只是 TextBlock),则列的大小将调整为标题宽度,而不是内容的宽度。虽然内容在那里,但看起来好像是 0。 我有一种感觉,在调整列大小之前,我需要以某种方式计算用户控件的实际大小? 这是正确的吗?我该怎么做呢?我有什么遗漏的吗? 在重新调整控件大小之前似乎没有生成视觉容器。我已将代码更改为以下内容,现在它按预期工作。 foreach (var item in LvArticles.Items) { object viewItem = LvArticles.ItemContainerGenerator.ContainerFromItem(item); if (viewItem == null) { LvArticles.UpdateLayout(); LvArticles.ItemContainerGenerator.ContainerFromItem(item); } } foreach (GridViewColumn c in ((GridView)LvArticles.View).Columns) { c.Width = 0; //set it to no width c.Width = double.NaN; //resize it automatically } 如果我理解正确的话,这会强制 UI 生成实际的表示。一旦表示存在,我们就可以成功计算列的大小。

回答 1 投票 0

“UserControlform”类型的值无法在 VB.NET 中转换为“Form”

我的“UserControl”表单中有错误 即在 BunifuSnackbar 中,但如果我在表单中使用它,则不会出现错误。 错误是“PgStockin”类型的值无法转换为“Form” 请指导我。 T...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.