我尝试在 PickerMode.Expanded 中使用带有列表选择器的 CustomMessageBox,但我遇到了问题。
在更改 ItemsSource = new string[] { "5 minutes", "10 minutes", "1 hour", "4 hours", "1 day", "2 days", "后运行 CustomMessageBoxSample 可以看到同样的问题10 天" } ,即超过 5 个元素,因此默认情况下它将在 FullMode 下打开。
在这种情况下,保持其他代码示例不变,单击 listpicker 会打开 fullMode 选择页面,但在选择之后,整个 CustomMessageBox 将关闭(您无法决定按下它的左键或右键)。我尝试按如下方式更改代码,但在这种情况下,fullMode 选择页面在 messageBox 后面打开,无法看到并且无法进行选择(如果您放置了许多项目,您可以看到它,灰色,所以它有一个长长的项目列表,因此其中一些可以在前台消息框下方的背景中显示。
messageBox.Dismissing += (s1, e1) =>
{
//if ((listPicker.ListPickerMode == ListPickerMode.Expanded)
if ((listPicker.ListPickerMode == ListPickerMode.Expanded) || (listPicker.ListPickerMode == ListPickerMode.Full))
{
e1.Cancel = true;
}
};
我也尝试使用以下代码,但 fullMode 选择页面,即使现在可见,但未启用,因此无法进行选择....
messageBox.Dismissing += (s1, e1) => {
if (listPicker.ListPickerMode == ListPickerMode.Expanded)
{
e1.Cancel = true;
}
else if (listPicker.ListPickerMode == ListPickerMode.Full)
{
e1.Cancel = true;
messageBox.Visibility = Visibility.Collapsed;
//listPicker.IsEnabled = true; //???
// listPicker.Focus(); //???
// listPicker.UpdateLayout(); //???
}
};
listPicker.SelectionChanged += (s3, e3) => {
if (listPicker.ListPickerMode == ListPickerMode.Full) {
messageBox.Visibility = Visibility.Visible;
}
};
有什么建议吗?
谢谢恩佐·康蒂尼