我刚刚进入Android开发阶段.我试图弄清楚它是否可以设置类似于Silverlight,WP7或ASP.NET中可用的用户控件的东西,我可以在布局中定义可重用的组件,然后将该布局嵌入到另一个布局中.
那可能吗?
谢谢.
我在使用时遇到问题LoadControl( type, Params ).让我解释...
我有一个超级简单的用户控件(ascx)
<%@ Control Language="C#" AutoEventWireup="True" Inherits="ErrorDisplay" Codebehind="ErrorDisplay.ascx.cs" EnableViewState="false" %>
<asp:Label runat="server" ID="lblTitle" />
<asp:Label runat="server" ID="lblDescription" />
Run Code Online (Sandbox Code Playgroud)
代码(c#)背后:
public partial class ErrorDisplay : System.Web.UI.UserControl
{
private Message _ErrorMessage;
public ErrorDisplay()
{
}
public ErrorDisplay(Message ErrorMessage)
{
_ErrorMessage = ErrorMessage;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (_ErrorMessage != null)
{
lblTitle.Text = _ErrorMessage.Message;
lblDescription.Text = _ErrorMessage.Description;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Web应用程序的其他地方,我使用以下代码将usercontrol的实例添加到页面:
divValidationIssues.Controls.Add(LoadControl(typeof(ErrorDisplay), new object[] { MessageDetails }));
Run Code Online (Sandbox Code Playgroud)
我正在使用LoadControl的重载版本,因为我想将Message参数传递给构造函数.这一切看起来都可行.
但是,当在OnPreRender()ErrorDisplay用户控件上触发时,lblTitle和lblDescription变量都是 …
在最近的一次采访中,我认为我对这个问题有合理的答案,但我对此进行了轰炸.:(
这就是我想要做的:
UserControl是我希望被其他开发者消费的.我希望最终用户能够使用依赖属性来使用我的控件.
<lib:ControlView ControlsText={Binding Path=UsersOwnViewModelText} />
Run Code Online (Sandbox Code Playgroud)我正在使用MVVM模式.
我将我的ViewModels绑定到他们的View使用 <DataTemplates>
<DataTemplate DataType="{x:Type local:ControlViewModel}">
<local:ControlView />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)所以我有两个问题:
我是否认为如果在XAML中使用UserControl,那么UserControl必须将ViewModel设置为DataContext控件Loaded事件触发时的方式而不是使用<DataTemplate>方法?
如何允许用户将数据绑定到我的控件的依赖项属性,同时仍然是绑定到我的ViewModel的数据?
我去创建了一个包含大量控件的选项卡,其中大部分都包含在我称之为顶级组框的内容中.现在我决定我希望顶级组框的文本是粗体,但没有别的.但是,当我将顶级组框的字体设置为粗体时,其中包含的所有控件也会变为粗体,这是我不想要的.我可以将每个单独控件的粗体属性设置为false,但似乎应该有一种更简单的方法来执行此操作.有任何想法吗?
我可能错过了一些显而易见的东西,比如一个正在盯着我的群组房产 - 并且如果事实证明是这样的话就道歉.
在此先感谢您的帮助.
我有类层次结构是这样的情况,
+---------------+
| UIElement |
|---------------| +----------------------+
| ... | | My Windows Application
| SomePropert{} | |----------------------|
| |<---+ |+--------------------+|
| | | ||MyUserControl ||
+---------------+ | ||--------------------||
+--------------+-----+ || ||
|FrameWorkElement | |+--------------------+|
|--------------------| |//Want to use |
| ... |<-+ |// SomeProperty; |
+--------------------+ | | |
+-----------+-+ | |
|Control | | |
|-------------| +----------------------+
| ... |<---+
+-------------+ |
+-----------+---+
| UserControl |
|---------------|<---+
| ... | |
+---------------+ |
+----------+-------+
| MyUserControl |
|------------------| …Run Code Online (Sandbox Code Playgroud) 我在WPF中有一个UserControl:
<UserControl x:Class="XLogin.DBLogin"
x:Name="DBLoginUserFrame"
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"
Height="263"
Width="353"
Loaded="DBLoginUserFrame_Loaded"
Unloaded="DBLoginUserFrame_Unloaded">
<Grid>
<GroupBox Header="Database Connection"
HorizontalAlignment="Left"
Height="243"
Margin="10,10,0,0"
VerticalAlignment="Top"
Width="333">
<Grid>
<TextBox x:Name="TextUserDB"
HorizontalAlignment="Left"
Height="20"
Margin="101,60,0,0"
TextWrapping="Wrap"
VerticalAlignment="Top"
Width="173" />
<Label Content="Password:"
HorizontalAlignment="Left"
Height="24"
VerticalAlignment="Top"
Width="70"
HorizontalContentAlignment="Right"
Margin="10,85,0,0" />
<PasswordBox x:Name="TextPasswordDB"
HorizontalAlignment="Left"
Height="20"
Margin="101,89,0,0"
VerticalAlignment="Top"
Width="173" />
<Button x:Name="BtnConnect"
Content="Connetti"
Height="29"
Width="123"
Margin="101,152,97,24"
Click="BtnConnect_Click" />
</Grid>
</GroupBox>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
当我卸载此控件时,WPF引发事件DBLoginUserFrame_Unloaded,保存我的设置,它完成一项工作.
我在WPF中的MainWindow加载了这个用户控件但是当窗口关闭时,我的usercontrol UNLOAD不会触发:
<Window x:Class="XLogin.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:local="clr-namespace:XLogin" Unloaded="Window_Unloaded_1">
<Grid>
<local:DBLogin/>
</Grid></Window>
Run Code Online (Sandbox Code Playgroud)
如何将UserControl Unload事件添加到MainWindow事件处理程序?
我是DAT.gui的快乐用户,用于本地调试和我正在处理的图表控件,但我需要具有基本相同功能的东西
但我需要它更具可定制性,所以我可以设计它以匹配我们的产品,并最终添加新功能.
那里有类似的东西吗?
javascript user-interface user-controls user-experience dat.gui
我有一个wpf usercontrol的问题,这是我自己设计的.问题是object reference not set to an instance of an object,当我在程序中实现usercontrol时,我在设计时遇到XAML代码中的异常.
我该如何修复或压制这个例外?
编辑1
设计师向我展示以下信息:
at Microsoft.Expression.Platform.Platform.InstanceBuilders.Clstform.Platform.Instantiate中的Microsoft.Expression.Platform.InstantiateType(Type type,Boolean supportInternal),Microsoft.Expression.Platform.InstantiateTargetType(IInstanceBuilderContext context,ViewNode viewNode)at Microsoft.Expression.Platform.InstanceBuilders.ClrObjectInstanceBuilder.Instantiate (IInstanceBuilderContext上下文,viewNode viewNode)在Microsoft.Expression.WpfPlatform.InstanceBuilders.FrameworkElementInstanceBuilder.Instantiate(IInstanceBuilderContext上下文,viewNode viewNode)在Microsoft.Expression.WpfPlatform.InstanceBuilders.UserControlInstanceBuilder.Instantiate(IInstanceBuilderContext上下文,viewNode viewNode)在Microsoft.Expression. Platform.InstanceBuilders.ViewNodeManager.CreateInstance(IInstanceBuilder builder,ViewNode viewNode)
我认为他们并没有真正的帮助......
我在WPF窗口中使用了一个滑块,当用户点击滑块轨道上的某个位置时,我想要那个拇指转到那个确切的位置.目前,当我点击某处,拇指朝去那个位置,但不完全相同那个位置.我怎样才能实现我的目标?
编辑:一个更好地解释我想要的例子:如果拇指位于10并且我在100附近按下鼠标,我希望它跳到100(不通过其他值).
user-controls ×10
wpf ×4
c# ×3
asp.net ×2
xaml ×2
.net ×1
android ×1
containers ×1
controls ×1
dat.gui ×1
events ×1
exception ×1
java ×1
javascript ×1
layout ×1
loadcontrol ×1
mvvm ×1
routedevents ×1
slider ×1
vb.net ×1
winforms ×1