- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个用户控件,我想在其他项目中使用它。当我直接为其属性设置一些值时没有问题:
<local:MyUserControl prop1="val1" prop2="val2">
...
</local:MyUserControl>
但我无法对其应用样式。我试过:
<Window ...>
<Window.Resources>
<Style x:Key="MyUserControlStyle" TargetType="{x:Type local:MyUserControl}">
<Setter Property="prop1" Value="val1"/>
<Setter Property="prop2" Value="val2"/>
</Style>
</Window.Resources>
<Grid>
<local:MyUserControl Style="{StaticResource ResourceKey=MyUserControlStyle}">
...
</local:MyUserControl>
</Grid>
</Window>
我哪里做错了? -谢谢
最佳答案
使用亲爱的@Mario Vernari 的说明,我发现问题是由于我用来创建我的 UserControl 的错误策略造成的。我想创建一个能够容纳其他一些用户控件的用户控件。所以我试过这个:
<UserControl x:Class="MyNamespace.MyUserControl"
...
Style="{DynamicResource ResourceKey=MyUserControlStyle}">
<UserControl.Resources>
...
<Style x:Key="MyUserControlStyle" TargetType="{x:Type UserControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type UserControl}">
<Border BorderBrush="{Binding Path=DP1}">
...
<ContentPresenter ... Content="{TemplateBinding Content}"/>
...
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
</UserControl>
其中 DP1
是 Brush
类型的依赖属性。如果您直接设置其属性(如 DP1
),则通过这种方式创建的 UserControl 可以正常工作。这绝对不是@Mario 告诉我的正确方法:
...When you use an UserControl, it means that you already know its layout, and there is no need to style the control further. You are defining its style twice at the same time thus results a collision...
他补充说:
Instead, you should use a CustomControl; Define the default style in the Themes folder (if you own regular Visual Studio, it makes automatically). Afterward, you may override the default style in your own app. In the same way you would do for a normal base class and its derived.
Follow this: http://www.codeproject.com/KB/WPF/WPFCustomControl.aspx ...
显然,在这种情况下,我们需要从 ContentControl
类(而不是 Control
类)派生我们的 lookless 控件。你可以看看this & this掌握细节。
在此,再次感谢@Mario。 ;)
关于c# - 在 WPF UserControl 上应用样式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7470621/
您好,我的 WPF UserControl 知识只有一个小时了。因此,如果有很多关于这个问题的教程或/和答案,请原谅我(老实说,我认为这无法完成,需要重新编写代码……因此我想问的原因) 因此,在创建
我看过几篇文章介绍如何删除在运行时添加的 UserControl,但我的问题有点不同。我有一个 UserControl,它由一个图像组成,右上角有一个小“x”按钮,用于从其父 Canvas 中删除自身
我有一个用户控件 UserControl1,它在其资源中定义了一种样式。该用户控件包含一个 UserControl2 实例,它引用了该样式:
我正在尝试以 How can a WPF UserControl inherit a WPF UserControl? 中提到的方式继承 WPF 中的用户控件 namespace DMS.Presen
我想创建几个具有一些通用功能的 WPF UserControl 类。出于这个原因,我想从一个新的基类派生类,而这个基类又派生自 UserControl。 我的问题是我的 C# 类是 部分 定义的,而自
这个问题在这里已经有了答案: Should a user control have its own view model? (6 个答案) How to correctly bind to a de
我有一个 UserControl,它包含另一个带有 Button 的 UserControl。我想在第一个 UserControl(父级)中向该按钮添加一个事件。我尝试这样做: void Page_I
我需要我所有的用户控件都具有一些类似的功能。所以我的用户控件是: using System.Windows.Controls; namespace WpfApplication26 { ///
以下 WPF UserControl 调用了 DataTypeWholeNumber,它有效。 现在我想创建一个名为 DataTypeDateTime 和 DataTypeEmail 等的 UserC
我有一个包含按钮和其他一些控件的 UserControl: ... 当我创建该控件的新实例时,我想获取 Button 的 Command 属性: 当然,“Th
我不确定这个问题是否已经发布,并且我已经检查了建议的 SO 链接,但似乎没有一个链接与该问题完全相关。因此,如果有人认为这可能是重复的,请发布建议答案的链接并原谅这篇文章。 解决我的问题的方法可能不止
我在 UserControl_1 中有两个 UserControl,有一个按钮可以在 MainWindow.axml 中的 StackPanel 中添加 UserControl_2。我在 UserCo
我正在开发一个由多个传感器组成的模块化项目,每个传感器都继承自一个抽象的 Sensor 类。为了配置每个传感器,我已经开始为每个传感器添加一个用户控制面板(继承自 UserControl),它在运行时
我正在使用 c#.net 我的网络表单中有不同的 View ,除了三个文本框(到达/看到/离开时间)之外,这些通常都显示不同的信息。为了尝试减少代码,我创建了一个包含这三个文本框的 UserContr
我有一个 UserControl,它有两个组件 public System.Windows.Forms.ComboBox innerComboBox; public System.Windows.Fo
我有一个包含 ListBox 的 userControl。我想从另一个 userControl 访问那个 ListBox。 例如: UserControl1.ListBox1.Items.Count;
我在更新另一个用户控件中的用户控件时遇到问题。 示例代码: UserControl MyCart1 = (UserControl)Page.FindControl("MyCart1"); Update
我在下面添加了一些屏幕截图和重现步骤。 我的数据模型有一个基类,我们称它为 CommonThing,它有很多属性。然后有几个具有附加属性的此类的特殊版本。我现在想创建一个 UI 来将数据输入到这个模型
我有一个应用程序,我需要确保在使用 ShowDialog() 单击用户控件上的按钮打开的表单将在我处理用户控件时关闭和处理。 我通过计时器在主窗体中调用 userControl.Dispose()。
我正在努力实现... 用户控件(MyRepeater) Control Start Control End 页面 Page Start Page Item Tem
我是一名优秀的程序员,十分优秀!