19

我正在尝试将ListPicker控制器与ListPickerMode="Full", 一起使用以获取全屏选择窗口。但是,当我尝试时它只会产生错误

“在 System.Windows.dll 中发生了‘System.Windows.Markup.XamlParseException’类型的第一次机会异常

附加信息:设置属性Microsoft.Phone.Controls.ListPicker.ListPickerMode引发异常。[行:49 位置:57]"

这是我的代码:

<toolkit:ListPicker x:Name="OutputSelector" ListPickerMode="Full"   
Margin="0,542,6,0" Header="Output Type" Width="450" VerticalAlignment="Top" />

如果有任何帮助,我会在 C# 中使用设置为 ItemSource 的列表填充我的 ListPicker。另一件事是,当我尝试在 xml 中编写“ListPickerMode”时,它并没有将其作为一个选项,但是当我写完整个内容时,它建议“完整”“扩展”和“正常”。

如果我向 ListPicker 添加 5 个项目,它会自动使用 FullMode,并且我尝试更改 ItemCountThreshold="0" 但这只会产生更多错误。

我正在使用 Windows Phone 7.1 OS 2011 年 8 月版本。

第一天使用 Windows Phone 编程的可能只有我自己很愚蠢 :)

更新!

好吧,看起来 ItemCountThreshold 和 ListPickerMode 已在 7.1 或其他版本中被删除,至少在 XAML 部分,而不是 C# 部分,它们是只读的。

解决我的问题!

<toolkit:ListPicker x:Name="OutputSelector" ExpansionMode="FullScreenOnly"   
Margin="0,542,6,0" Header="Output Type" Width="450" VerticalAlignment="Top" />

ExpansionMode 将使 Listpicker 全屏显示或展开。

4

2 回答 2

5

如 silverlight 工具包 [1] 的问题跟踪器中所述,不应设置 ItemCountThreshold(也不能使用简单的 xaml 设置)。

但是,此问题有两种解决方法。如果您不介意使用代码隐藏,请通过 SetValue 设置属性:

//e.g., in the constructor, just after InitializeComponent();
ListPicker.SetValue(Microsoft.Phone.Controls.ListPicker.ItemCountThresholdProperty, 0);

要在 xaml 中设置值,可以使用绑定:

<toolkit:ListPicker ItemCountThreshold="{Binding Hugo,FallbackValue=0}">(...)

在此示例中,我使用了一个虚假的绑定表达式并使用 FallbackValue 设置值。当然,实际工作的绑定也应该可以工作。xaml 方法仅在 WP8 SDK 上进行了测试,但它也应该适用于 7.1。

编辑:刚刚发现 xaml 方法破坏了设计器。

[1] http://silverlight.codeplex.com/workitem/9742

于 2012-11-07T14:12:19.070 回答
4

作者提出的解决方案(移到这里以获得更好的可见性):

好吧,看起来 ItemCountThreshold 和 ListPickerMode 已在 7.1 或其他版本中被删除,至少在 XAML 部分,而不是 C# 部分,它们是只读的。

解决我的问题!

<toolkit:ListPicker x:Name="OutputSelector" ExpansionMode="FullScreenOnly"   
Margin="0,542,6,0" Header="Output Type" Width="450" VerticalAlignment="Top" />

ExpansionMode 将使 Listpicker 全屏显示或展开。

于 2012-06-11T13:33:43.913 回答