我有一个UserControl,其中包含一些布尔属性.如果没有在.aspx页面中显式设置,我希望它们默认设置为true,或者至少强制它们在无法设置默认值时声明.我知道有一种方法可以做到这一点,因为许多控件都需要在您尝试运行时破坏应用程序并且未声明它们的属性.
我该怎么做呢?
例:
<je:myControl runat="server" id="myControl" showBox="False">
Run Code Online (Sandbox Code Playgroud)
如果showBox不在此声明之内,我希望系统中断或将默认值设置为"true".
谢谢!
Debug.WriteLine(ucFollow.Visible);
ucFollow.Visible = true;
Debug.WriteLine(ucFollow.Visible);
Run Code Online (Sandbox Code Playgroud)
ucFollow是一个自定义UserControl,没什么特别的.上面的代码打印出来:
False
False
Run Code Online (Sandbox Code Playgroud)
最糟糕的是,这确实切换了UserControl的实际可见性(即,一旦调用此代码,ucFollow就会出现),但似乎某种程度上Visible属性不是......好,在后端可见,而不是反映变化,即使UI本身也是如此.
我甚至不知道从哪里开始排除故障.有没有人有什么想法可以远程引起这种疯狂?
编辑:这是在Visual Studio 2010中使用标准C#WinForm.
还有一个类似的问题: 使用.NET 4.0在IE中加载.NET UserControls这个问题基本相同,但对于.NET 4.5
这个问题的开头是: 我有一个遗留应用程序,其中有一个UserControl,用作IE中加载的网页中的activex.在.NET 4.0之前,有安全策略和MMC控制台用于创建代码组等.看起来这一切都已经过去了.NET 4.0.
安装.NET 4.5后,似乎解决方法不再有效,并且IE无法加载任何用户控件.我担心这个功能会被完全删除.在这种情况下,在用户安装.NET 4.5之前,我们需要进行一些严肃的重写
一些说明:
有关此功能的消息或信息的任何人?
谢谢
我正在寻找一种方法(最好)从用户控件强烈键入母版页,该控件位于使用母版页的内容页面中.
遗憾的是,你不能在用户控件中使用它:
<%@ MasterType VirtualPath="~/Masters/Whatever.master" %>
Run Code Online (Sandbox Code Playgroud)
我正在尝试从用户控件访问母版页的属性,而不是必须将属性从母版页传递到内容页面到用户控件,因为多个内容页面使用相同的用户控件.一个变化,一个地方诸如此类.
我想构建一个用户控件,假设MyDiv.ascx.这个控件呈现div标签,并在诸如添加少量属性之类的东西之后做更多代码,这在这里不是问题.问题是我希望用户控件的开始和结束标记之间的文本.例如:
文本与其他一些HTML标签一起使用.
因此,当做这样的事情时,我在运行网站时遇到了解析错误.此外,VS2008通过说" 元素 MyDiv 的开始和结束标签之间不允许内容 "来警告我.
问题1:我可以做这样的事情,即用户控件的开始和结束标签之间的文本/标记吗?
问题2:如果是,如何
我在Visual Studio中使用"WPF用户控件库"模板制作了一个项目.该项目包含一个主要用户控件以及其他Windows/Usercontrols.
如何"隐藏"这些额外的Windows/Usercontrols,以便用户只能从程序集中导入主用户控件(我想用屏幕截图来说明我的问题但不幸的是,我的"声誉"太低了!) .
Thx All
Fred
我有一个Usercontrol(TabUserControl),其中包含一个TabControl.UserControl的Viewmodel加载了Ob Obtable的TabItems集合.这些项目是另一个用户控件.当我只在tabcontrol中加载文本时没有问题,但是如何将其他用户控件加载到TabUserControl的tabitem中.我正在使用MVVM.
这是我的代码:
public class TabItem
{
public string Header { get; set; }
public object Content { get; set; } // object to allow all sort of items??
}
Run Code Online (Sandbox Code Playgroud)
TabUserControl的Viewmodel
public class TabViewModel
{
public ObservableCollection<TabItem> Tabs {get;set;}
public TabViewModel()
{
Tabs = new ObservableCollection<TabItem>();
//Tabs.Add(new TabItem { Header = "Overview", Content = new OverviewViewModel() }); How to load a usercontrol here if it's in the ItemCollection?
Tabs.Add(new TabItem { Header = "Overview", Content = "Bla bla bla" }); …Run Code Online (Sandbox Code Playgroud) 我有一个可视化的Web部件(使用标准的Visual Stuido 2012模板从"添加新项目"表单创建)只有一个<div id="newsListDiv" runat="server"></div>元素.我想使用以下代码以编程方式将自己的用户控件添加到它:
protected void Page_Load(object sender, EventArgs e)
{
NewsLine newsLine = Page.LoadControl(@"~/_ControlTemplates/MainTheme/NewsLine.ascx") as NewsLine;
newsListDiv.Controls.Add(newsLine);
}
Run Code Online (Sandbox Code Playgroud)
但是当我部署解决方案并将Web部件添加到页面时,它会显示一个错误页面,告诉我文件'/_ControlTemplates/MainTheme/NewsLine.ascx'不存在.但是,如果我查看文件夹"C:\ Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\CONTROLTEMPLATES\MainTheme",我可以看到该文件存在于那里.我试图将信任级别设置为"完全",但得到了相同的错误.我也尝试在.ascx文件中添加用户控件,如下所示:
<%@ Register Src="~/_controltemplates/MainTheme/NewsLine.ascx" TagPrefix="uc1" TagName="NewsLine" %>
<div id="newsListDiv" runat="server">
<uc1:NewsLine runat="server" id="NewsLine" />
</div>
Run Code Online (Sandbox Code Playgroud)
这样就得到了编译错误:"当前上下文中不存在名称'InitializeControl'".我也注意到,只要我将注册或参考行(带有我的用户控件的路径)添加到我的.ascx文件,.g.cs文件就会变成空白!当我删除该行时,它会再次填满.我尝试了许多不同的路径着作,如"../_controltemplates/","/ controltemplates/15 /"等.但它们都没有任何区别.我在这里绝望,请帮忙!
我在没有预算支付控件的IT商店工作.是否有针对mvc的telerik网格的开源替代方案?我想为我的网页提供丰富的数据网格.
我必须在这里做一些愚蠢的事情但是当我点击UserControl时我无法触发MouseDown事件.疯了.
这是UserControl的XAML:
<UserControl x:Name="cusTextBox" x:Class="StoryboardTool.CustomTextBox"
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="300" d:DesignWidth="300" MouseDown="cusTextBoxControl_MouseDown">
<Grid>
<RichTextBox x:Name="richTextBox">
<RichTextBox.ContextMenu>
<ContextMenu>
<MenuItem x:Name="ContextMenuBringForward" Header="BringForward" Click="ContextMenuBringForward_Click"/>
<MenuItem x:Name="ContextMenuSendBackward" Header="SendBackward" Click="ContextMenuSendBackward_Click"/>
</ContextMenu>
</RichTextBox.ContextMenu>
</RichTextBox>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
代码背后:
private void cusTextBoxControl_MouseDown(object sender, MouseButtonEventArgs e)
{
selected = (CustomTextBox)sender;
}
Run Code Online (Sandbox Code Playgroud)
点击用户控件时为什么不会出现此问题?
user-controls ×10
c# ×4
asp.net ×3
wpf ×3
.net ×1
.net-4.5 ×1
datagrid ×1
default ×1
master-pages ×1
mousedown ×1
mvvm ×1
open-source ×1
sharepoint ×1
tabitem ×1
web-parts ×1
winforms ×1