Windows 8需要创建向导自定义控件

时间:2014-01-29 16:50:03

标签: c# xaml windows-8 custom-controls winrt-xaml

标题##我正在创建一个Windows 8应用程序,我需要在其中创建一个向导控件。此控件如下所示:

enter image description here

步骤应启用仅导航到前一步或当前步骤,应禁用后续步骤,并且只应在从下一个按钮导航后启用。如图所示,步骤4和步骤5被禁用,因为当前步骤是步骤3。

在每一步中都会有一个我认为应该是自定义控件的表单。

我需要使这个向导动态化,这样只需发送自定义控件列表就可以自动生成图中所示的所有UI。

我应该如何创建或接近这个,因为我可能需要n个表单才能优化性能。请告诉我你的建议?

建议后创建示例代码:

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <ListView x:Name="lstVwSelectItem" >
            <ListViewItem>1</ListViewItem>
            <ListViewItem>2</ListViewItem>
        </ListView>

        <ContentControl Grid.Column="1" Content="{Binding SelectedIndex, ElementName=lstVwSelectItem}" 
                        ContentTemplateSelector="{StaticResource myAppBarSelector}">
            <ContentControl.Resources>
                <DataTemplate x:Key="0">
                    <TextBlock Text="Hello 1" Foreground="White" />
                </DataTemplate>

                <DataTemplate x:Key="1">
                    <TextBlock Text="Hello 2" Foreground="White" />
                </DataTemplate>
            </ContentControl.Resources>
        </ContentControl>   
    </Grid>

 public class AppBarSelector : DataTemplateSelector
    {
        protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
        {
            if (item == null) return base.SelectTemplateCore(item, container);

            var contentControl = (ContentControl)container;
            var templateKey = Convert.ToString(item);

            if (contentControl.Resources.ContainsKey(templateKey))
            {
                return (DataTemplate)contentControl.Resources[templateKey];
            }
            else
            {
                return (DataTemplate)contentControl.Resources["0"];
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

左侧的部分看起来像ItemsControl绑定到一系列步骤。右侧的部分看起来像一个面板,其中两个按钮绑定到ICommand属性,一个ContentControl绑定到CurrentStep视图模型,ContentTemplateSelector设置为DataTemplateSelector 1}}实施。对于每个步骤,使用自定义控件而不是ContentControlDataTemplate,您可以将另一个ItemsControl绑定到带有ItemTemplate的表单字段视图模型列表,或者ItemTemplateSelector允许编辑其中的每一个。