我有一个组合框,我正在通过收集视图源填充。这些项目是通过传入项目类型的数据板构建的(在本例中为ProjectViewModel)。这是在WPF中。NET 4.0。
在我的窗户里。资源,我指定了以下内容:
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
尽管有这种风格,我仍然收到以下错误:
系统。Windows.Data错误:4:找不到引用为“RelativeSource FindAncestor,ancestor type =”System的绑定的源。Windows.Controls.ItemsControl ',AncestorLevel='1 ' '。binding expression:Path = horizontal content alignment;DataItem = null目标元素是“ComboBoxItem”(名称=“”);目标属性为“HorizontalContentAlignment”(类型为“HorizontalAlignment”)
系统.Windows。数据错误:4:无法找到引用“RelativeSource FindAncestor,AncestorType=”System.Windows.Controls的绑定源。ItemsControl',AncestorLevel=“1”。BindingExpression:路径=VerticalContentAlignment;数据项=空;目标元素是“ComboBoxItem”(名称=“”);目标属性是“VerticalContentAlignment”(类型为“Vertical Alignment)
我也在ComboBox元素上指定了水平和垂直内容对齐,但无济于事。这不是一个可怕的问题,因为项目正确显示。但是在调试时,关闭窗口时我确实有大约 10 秒的延迟,同时它将大约 4000 条错误消息输出到输出窗口(我需要打开该窗口以捕获合法的绑定错误。
我可能没有正确解读错误。为什么它找不到绑定的有效源?据我所知,我使用ComboBox和CollectionViewSource的方式符合他们的意图。
与此错误斗争了几个小时,尝试了谷歌的所有解决方案,只有这个有效,从组合框样式中删除 OverridesDefaultStyle 属性行:
// before
<Style x:Key="{x:Type ComboBoxItem}" TargetType="{x:Type ComboBoxItem}">
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="OverridesDefaultStyle" Value="true" />
// after
<Style x:Key="{x:Type ComboBoxItem}" TargetType="{x:Type ComboBoxItem}">
<Setter Property="SnapsToDevicePixels" Value="true" />
在数据网格单元格 https://learn.microsoft.com/en-us/dotnet/desktop/wpf/controls/combobox-styles-and-templates?view=netframeworkdesktop-4.8 内对组合框使用样式模板
我只想提一下我为这个问题纠结了两天。最常见的建议解决方案(将Horizontal/vertical contentalignment样式添加到元素中,甚至添加到App.xaml中)并不总是能解决问题。
最终,我发现了一些我自己情况的独特之处——我希望它能对某人有所帮助:如果您正在使用FilterEventHandler,请不要在重新订阅之前取消订阅!
每当我更改通道过滤器(调用UpdateCorporatesList)时,我的旧代码都会不断生成“数据错误4”消息:
// This code generates errors
private void UpdateCorporatesList()
{
this.CorporatesViewSource.Filter -= new FilterEventHandler(ApplyCorporateFilter);
if (this.ChannelFilter != null)
{
this.CorporatesViewSource.Filter += new FilterEventHandler(ApplyCorporateFilter);
}
else
{
this.CorporateFilter = null;
}
}
private void ApplyCorporateFilter(object sender, FilterEventArgs e)
{
SalesCorporate customer = e.Item as SalesCorporate;
var currentChannel = this.Channels.FirstOrDefault(x => x.ID == this.ChannelFilter).Description;
if ((customer.ID != null) && (customer.Channel != currentChannel))
{
e.Accepted = false;
}
}
…所以我每次都将其更改为重新订阅FilterEventHandler,而是在事件处理方法中检查Channel Filter上的null。
// This code works as intended
private void UpdateCorporatesList()
{
this.CorporatesViewSource.Filter += new FilterEventHandler(ApplyCorporateFilter);
if (this.ChannelFilter == null)
{
this.CorporateFilter = null;
}
}
private void ApplyCorporateFilter(object sender, FilterEventArgs e)
{
var currentChannel = this.Channels.FirstOrDefault(x => x.ID == this.ChannelFilter);
if (currentChannel.ID == null)
{
return;
}
SalesCorporate customer = e.Item as SalesCorporate;
if ((customer.ID != null) && (customer.Channel != currentChannel.Description))
{
e.Accepted = false;
}
}
瞧!没有更多的错误:-)
我以为我已经在自己的程序中解决了这个问题,但发现它不断间歇性地弹出。终于设法找到了问题的根源。
如果您使用的是由 ICollectionView
支持的组合框,并且在事件队列上堆叠了两个或多个 collectionView.Refresh
() 调用(例如:由于两个不同的清理操作而调用刷新两次),这将导致它为每个额外的 Refresh()
调用在组合框的每个元素上生成绑定错误垃圾邮件。此绑定错误仅在至少打开组合框一次后才会发生。
重写它,以便对于给定的事件只调用< code>Refresh()一次,这将防止出现绑定错误。
我试图读取一个CSV文件,然后根据该CSV文件创建一个新的对象。我可以用SuperCSV库成功地做到这一点,但是如果发生错误(例如特定的单元格为null),它会抛出一个错误(如预期的那样)。我试图在ArrayList中收集所有错误,但现在第一个异常时一切都会停止。如何使SuperCSV CsvBeanReader继续到下一行,即使处理器出现错误?我在try/catch块中有循环条件。代码如下:
我创建了绑定到viewmodel相同属性的combobox和textblock 结果是在组合框中显示错误的selecteditem(总是第一个)。Textblock总是有正确的值。当我在combobox中选择不同的值时,textblock会正确更新。如果我移除 IsSynchronizedWithCurrentItem=“真” 然后组合框显示“空”值。语言的选择项目应该有正确的对象(通过调试)。
我是C#新手,我不断收到以下无法删除的错误。 我的代码如下,我不能确切地说出哪一行导致了错误,但我怀疑它与RibbonRadioButtons有关,因为如果我删除它们,我不会得到错误。只有在单击两个或更多单选按钮后,错误才会出现。ComboBoxItem上的一个回答继续抛出绑定错误,尽管style暗示是多个Refresh()语句导致了这个问题,但我不知道如何避免这个问题。 有人能帮我解决这个问题吗
我正在使用Sprock和Spring,当我嘲弄我的一个组件类时,我得到了错误。 > CGLIB-NODEP:3.2.0 CGLIB:3.2.0 Spock-Core:1.0-groovy-2.4 Spring-测试:4.1.4.释放 java.lang.NoClassDefoundError:无法初始化类org.spockframework.mock.runtime.proxybasedmockf
问题内容: 我正在使用Eclipse IDE开发桌面(秋千)应用程序。我有三个组合框(国家,州和城市),选择新的国家或省时需要自动更新数据。我搜索了很多信息,但是我发现的所有实现都是在Ajax或NetBeans中的bean绑定框架上完成的。我通过ItemEvent尝试了一种解决方案,但是在启动应用程序时遇到了问题,该应用程序加载了国家列表,但没有加载其他列表。通过选择一个国家,国家列表而不是城市列
我遵循了这个问题的步骤,但我仍然遇到问题。 我的控制器如下所示… 我的jsp文件... 我得到了错误... org.springframework.beans。NotReadablePropertyException:bean类[java.lang.String]的无效属性“value”:bean属性“value”不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类