在设计时创建可用的布局控件

时间:2016-06-20 10:34:20

标签: c# xaml winrt-xaml

我想创建一种"布局"帮助控制。使用它可以让我为几个部分定义内容,控件将负责确保布局一致。

我通过ContentPresenterobject依赖项属性执行此操作。

最终结果是,如果我运行应用程序,那么我定义的内容看起来很好。

但是在设计时间?它在设计师的屏幕上是空的。

这是一个主要问题 - 谁将会处理实际内容(无论是我还是其他任何人)应该能够预览他们正在做的事情,而无需不断启动应用程序。

我做错了什么?

以下是示例代码:

MainLayout.xaml(简化)

        <Grid>
            <Grid.ColumnDefinitions>
             <!--layout related stuff-->
            </Grid.ColumnDefinitions>
             <!--layout related stuff-->
            <Viewbox Grid.Column="1" Height="120" StretchDirection="DownOnly">
                <ContentPresenter x:Name="HeaderContentPresenter" />
            </Viewbox>
            <ContentPresenter Grid.Column="2" x:Name="ButtonContentPresenter" />
        </Grid>

MainLayout.cs(简化 - 继承UserControl

    public object HeaderContent
    {
        get { return (object)GetValue(HeaderContentProperty); }
        set { SetValue(HeaderContentProperty, value); }
    }

    // Using a DependencyProperty as the backing store for HeaderContent.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty HeaderContentProperty =
        DependencyProperty.Register("HeaderContent", typeof(object), typeof(MainLayout), new PropertyMetadata(null, (d, e) => (d as MainLayout).HeaderContentPresenter.Content = e.NewValue));

    public object ButtonContent
    {
        get { return (object)GetValue(ButtonContentProperty); }
        set { SetValue(ButtonContentProperty, value); }
    }

    // Using a DependencyProperty as the backing store for ButtonContent.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty ButtonContentProperty =
        DependencyProperty.Register("ButtonContent", typeof(object), typeof(MainLayout), new PropertyMetadata(null, (d, e) => (d as MainLayout).ButtonContentPresenter.Content = e.NewValue));

用法示例XAML:

<namespace:MainLayout>
  <namespace:MainLayout.HeaderContent>
    <TextBlock Text="This will be only visible once the app is started, but not in design-time" />
  </namespace:MainLayout.HeaderContent>
</namespace:MainLayout>

请注意 - 这是Windows 8.1(WinRT-XAML)相关问题。它可能与类似的WPF问题没有相同的解决方案。

0 个答案:

没有答案