【发布时间】:2014-01-29 16:50:03
【问题描述】:
标题##我正在创建一个 Windows 8 应用程序,我需要在其中创建一个向导控件。该控件如下所示:
这些步骤应该只允许导航到上一步或当前步骤,下一步应该被禁用,并且只能在从下一步按钮导航后启用。如图所示,步骤 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"];
}
}
}
【问题讨论】:
-
如果你做错了什么,除了可能的内存泄漏之外,你似乎并没有遇到性能问题。另外我认为你的问题有点太宽泛了。您尝试过什么,您的具体问题是什么?您是想创建一个您或其他人希望在多个应用程序中使用的可重用控件,还是只是为您的应用程序提供一些快速的东西?
标签: c# xaml windows-8 custom-controls winrt-xaml