步骤应启用仅导航到前一步或当前步骤,应禁用后续步骤,并且只应在从下一个按钮导航后启用。如图所示,步骤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"];
}
}
}
答案 0 :(得分:1)
左侧的部分看起来像ItemsControl
绑定到一系列步骤。右侧的部分看起来像一个面板,其中两个按钮绑定到ICommand
属性,一个ContentControl
绑定到CurrentStep
视图模型,ContentTemplateSelector
设置为DataTemplateSelector
1}}实施。对于每个步骤,使用自定义控件而不是ContentControl
和DataTemplate
,您可以将另一个ItemsControl
绑定到带有ItemTemplate
的表单字段视图模型列表,或者ItemTemplateSelector
允许编辑其中的每一个。