我一直在制作自己的自定义控件,当我想让我的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)));
有人能帮我解决问题吗?
答案 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。