c# – 如何在自定义模板中使用自定义属性?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何在自定义模板中使用自定义属性?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2198字,纯文字阅读大概需要4分钟。
内容图文
![c# – 如何在自定义模板中使用自定义属性?](/upload/InfoBanner/zyjiaocheng/776/95fe83aba6574fafb925eb9095384123.jpg)
假设想要创建一个左侧有一个小椭圆的自定义按钮.
我希望这个椭圆的颜色是数据可绑定的.
所以我启动Blend并在表面上放置一个按钮并编辑模板的副本.
我现在拥有自定义模板,并在其中放入一个小椭圆:
…
<Border x:Name="Background" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="White" CornerRadius="3">
<Grid Background="{TemplateBinding Background}" Margin="1">
<snip />
<!-- My ellipse here -->
<Ellipse x:Name="ellipse" Width="10" Height="10" HorizontalAlignment="Left" />
</Grid>
</Border>
…
我右键单击此按钮并选择Make into UserControl,命名为MyButton.
在这个按钮后面的代码中,我为theBrush`添加了一个自定义依赖项属性:
public Brush MyColor
{
get { return (Brush)GetValue(MyColorProperty); }
set { SetValue(MyColorProperty, value); }
}
public static readonly DependencyProperty MyColorProperty = DependencyProperty.Register("MyColor", typeof(Brush), typeof(MyButton), new PropertyMetadata(new opertyChangedCallback(MyColorPropertyChanged)));
private static void MyColorPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var thisControl = d as MyButton;
}
然后我可以使用我的自定义按钮:
<local:MyButton Width="130" MyColor="Red"/>
但后来我被卡住了.如何将我的椭圆颜色(上面的x:Name =“ellipse”)绑定到MyColor属性?
编辑:所以我使用Fill = {TemplateBinding MyColor}绑定用户控件中的Fill属性,但后来我在类型Button中找不到属性MyColor.
好的,所以我需要将我的模板定位到自定义MyButton类型,但我该怎么做呢?
我可以简单地将Button更改为MyButton,因为我在’MyButton’类型中找不到Property’ContentTemplate’
<UserControl
<snip/>
x:Class="SilverlightApplication1.MyButton">
<UserControl.Resources>
<Style x:Key="ButtonStyle1" TargetType="Button">
<snip/>
</Style>
</UserControl.Resources>
<Grid x:Name="LayoutRoot">
<Button Content="Test Button" Style="{StaticResource ButtonStyle1}"/>
</Grid>
</UserControl>
解决方法:
这里的问题是UserControl不是您控制的正确基础.你应该创建一个模板控件.
在Visual Studio中,将新的“Silverlight模板化控件”添加到名为MyButton的项目中.
打开MyButton.cs并将其基类更改为Button.将MyColor依赖项属性放入代码中.
打开Themes / Generic.xaml并找到为此新MyButton控件放置的默认样式.用模板替换该样式中的模板.现在,模板中的Fill =“{TemplateBinding MyColor}”将起作用.
内容总结
以上是互联网集市为您收集整理的c# – 如何在自定义模板中使用自定义属性?全部内容,希望文章能够帮你解决c# – 如何在自定义模板中使用自定义属性?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。