我需要在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);
}
}