Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 组合框周围出现神秘的红色边框_Wpf_Xbap - Fatal编程技术网

Wpf 组合框周围出现神秘的红色边框

Wpf 组合框周围出现神秘的红色边框,wpf,xbap,Wpf,Xbap,我有一个WPF应用程序-一个XBAP-在主页上有一个组合框。当我在组合框中选择一个项目时,事件处理程序将重建一个集合,该集合是列表框的数据源。看起来很简单,我以前在WPF中做过的所有事情 这是从列表中选择项目后我的下拉列表的外观: 红色边界究竟是从哪里来的?我从头开始构建表单,现在没有样式或任何东西。文本“红色”在项目中的任何地方都没有提到。它一出现就不会消失,它出现在我放在控件顶部的任何东西上 以下是标记: <ComboBox.ItemTemplate> <Data

我有一个WPF应用程序-一个XBAP-在主页上有一个组合框。当我在组合框中选择一个项目时,事件处理程序将重建一个集合,该集合是列表框的数据源。看起来很简单,我以前在WPF中做过的所有事情

这是从列表中选择项目后我的下拉列表的外观:

红色边界究竟是从哪里来的?我从头开始构建表单,现在没有样式或任何东西。文本“红色”在项目中的任何地方都没有提到。它一出现就不会消失,它出现在我放在控件顶部的任何东西上

以下是标记:

<ComboBox.ItemTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding Converter={StaticResource ResourceKey=DeviceInfoNameConverter}}"></TextBlock>
    </DataTemplate>
</ComboBox.ItemTemplate>

更多详情:

  • 这是一个在IE8中运行的XBAP应用程序
  • 同一页面上的其他下拉控件不执行此操作
  • 当我尝试使用Snoop检查控件树时,边框消失
  • 转换器不是问题的根源,我已尝试直接绑定到基础对象上的属性,但框仍然出现

到目前为止,我唯一的猜测是,有某种默认的错误模板正在应用于控件。我正在使用WIA,VS输出窗口中出现了几个COM异常,显然与ListView的数据绑定有关。控件的数据源是WIA.DeviceInfo对象,转换器只是获取下拉文本的name属性。

您选择的值是否不是集合的成员,而不是文件夹集合本身?i、 e Folders.Folder.ID或类似的东西

因此,您的CB itemsSource将是Folders,selectedItem将是Folder,selectedValue将是Name

您需要将SelectedValue更新为集合的成员。此外,您需要指定ItemsSource={Binding Path=Folders}“t。然后您需要指定DisplayMemberPath和SelectedValuePath

我将分别测试每个绑定。首先,通过删除项集合的每个绑定(如果已按选择启用/禁用)来测试绑定是否可启用。然后开始测试集合的绑定。

确保绑定的数据类型与预期的数据类型完全一致。 当我试图绑定
decimal
对象列表时,我有一个“神秘的红框”,但我的MVVM属性类型是
int
。请检查并再次检查所有
SelectedValue
displayemberpath
,如果正在使用它们,请确保未使用
SelectedValuePath
属性值当您打算使用时选择编辑项

在调试控制台中查找以下绑定错误:

System.NotSupportedException: Int32Converter cannot convert from System.Decimal


System.Windows.Data Error: 7 : ConvertBack cannot convert value '7' (type 'Decimal'). BindingExpression:Path=SharedProductHistoryFilterCriteria.FilterDays; DataItem='PricingManagerViewModel' (HashCode=19425465); target element is 'ComboBox' (Name=''); target property is 'SelectedValue' (type 'Object') NotSupportedException:'System.NotSupportedException: Int32Converter cannot convert from System.Decimal.
   at MS.Internal.Data.DefaultValueConverter.ConvertHelper(Object o, Type destinationType, DependencyObject targetElement, CultureInfo culture, Boolean isForward)
   at MS.Internal.Data.ObjectTargetConverter.ConvertBack(Object o, Type type, Object parameter, CultureInfo culture)
   at System.Windows.Data.BindingExpression.ConvertBackHelper(IValueConverter converter, Object value, Type sourceType, Object parameter, CultureInfo culture)'

我也有同样的问题,然后我将SelectedItem和ItemsSource的数据类型都更改为double。早些时候,我为ItemsSource提供了int列表,为SelectedItem提供了double。它可以工作。

看起来只是一个类型转换问题。在我的情况下,SelectedIndex绑定到一个枚举类型属性,而该属性的setter从未被调用D
我只需要在转换器的Convert和ConvertBack中显式地将返回值强制转换为正确的类型。

我也有同样的问题。结果是数据不匹配。Combobox所选项映射到字符串,所选值映射到字节。一旦我将两者转换为字符串,它就会按预期工作。

+1用于推荐调试console;这是确定验证失败原因的最简单方法。修复错误背后的原因比隐藏指示要好!我得到的只是抛出异常:System.dll中的System.NotSupportedException抛出异常:PresentationFramework.dll中的System.NotSupportedException抛出异常:这可能有帮助吗?