wpf用于按钮自定义控件的DependencyProperty

时间:2010-12-19 12:43:14

标签: wpf dependency-properties

我一直在制作自己的自定义控件,当我想让我的OwnButton作为正确的组件做出反应时,我遇到了麻烦。我希望我的组件的内容在被拖动到设计器时为“ownButton”,然后在属性列表中会有一个属性“Content”,程序员可以将该文本更改为所需的任何内容。

以下是我的Generic.xaml文件的一部分:

 <Button x:Name="PART_Button" Grid.Row="1" Margin="1,1,1,1" Template="{StaticResource OwnButtonTemplate}">
      <TextBlock Text="ownButton" FontFamily="Tahoma" FontSize="10"  HorizontalAlignment="Center" VerticalAlignment="Center" Name="textBlock" />
 </Button>

我能够在OwnButton类中创建DependencyProperty,但它没有链接到Button的内容。这是代码:

private const string defaultContent = "ownButton";

 public String Content
 {
        get { return (String)GetValue(ContentProperty); }

        set { SetValue(ContentProperty, value); }

 }

 public static readonly DependencyProperty ContentProperty =

 DependencyProperty.Register("Content", typeof(String), typeof(OwnButton), new    FrameworkPropertyMetadata(OwnButton.defaultContent, new PropertyChangedCallback(OwnButton.OnContentChanged), new CoerceValueCallback(OwnButton.CoerceContent)));

有人能帮我解决问题吗?

1 个答案:

答案 0 :(得分:0)

无法绑定到组件自己的DependencyProperty。但是,当我使用组件是一个带有TextBlock的Button的事实时,我终于找到了一个解决方案。我可以从代码中猜出我的解决方案对设计器不起作用,但是在程序执行时它应该做什么。

 <Button x:Name="PART_Button" Grid.Row="1" Margin="1,1,1,1" Template="{StaticResource ButtonRandomTemplate}">
                            <TextBlock Text="{Binding Content, ElementName=PART_Button, UpdateSourceTrigger=PropertyChanged}" FontFamily="Tahoma" FontSize="10"  HorizontalAlignment="Center" VerticalAlignment="Center" Name="textBlock" />

我使用数据绑定到TextBlock的Text-property,现在我能够在代码中组合我的组件的DependencyProperty Content和PART_Button。