呈现自定义附加属性值

时间:2010-06-04 14:44:17

标签: wpf rendering attached-properties

需要在XAML中执行此操作:

<Grid x:Name="layoutRoot">

    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <SomeUserControl Grid.Row="0" />

    <ui:AdditionalView.UseCase1>
        <ContentControl>
           <TextBlock>aaa</TextBlock>
         </ContentControl>
     </ui:AdditionalView.UseCase1>

</Grid>

首先,最重要的是,我需要在Something.UseCase1表单中使用块。这就是我最终使用附加属性的方式。我定义了AdditionalView类,并在其上定义了一个名为UseCase1的附加属性。

然而,这不会呈现

<TextBlock>aaa</TextBlock> 

在运行时。

我怎样才能做到这一点?


后来编辑(1) - 我设法得到一些像这样的工作:

<ContentControl Grid.Row="1" Content="{Binding ElementName=layoutRoot, Path=(ui:AdditionalView.UseCase1)}" />

..但似乎很讨厌。有什么好办法可以让它发挥作用吗?

AdditionalView类:

public class AdditionalView
{
    public static readonly DependencyProperty UseCase1Property = DependencyProperty.RegisterAttached(
        "UseCase1",
        typeof(object),
        typeof(AdditionalView),
        new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender)
    );

    public static void SetUseCase1(UIElement element, Boolean value)
    {
        element.SetValue(UseCase1Property, value);
    }
    public static object GetUseCase1(UIElement element)
    {
        return element.GetValue(UseCase1Property);
    }
}

0 个答案:

没有答案