我有他们的视图模型页面。将APage
替换为Frame
using中的Frame.NavigationManager.Navigate()
。
在一个Page
我有GroupBox
一个孩子DataGrid
。我要根据中的项目数GroupBox
更改它。Visibility
DataGrid
这是我所拥有的:
<GroupBox ....
Visibility="{Binding ElementName=SomeDataGrid,
Path=HasItems,
Converter={StaticResource BooleanToVisibilityConverter}}">
<DataGrid x:Name="SomeDataGrid"
IsReadOnly="True"
ItemsSource="{Binding Items}"/>
</GroupBox>
更改Page
为另一个并返回后,我有以下绑定异常
System.Windows.Data错误:4:找不到参考源进行绑定
'ElementName = SomeDataGrid'。BindingExpression:Path = HasItems;
我已经尝试使用,x:Reference
但是遇到了同样的问题。
有人可以解释我在做什么错吗?
Items
集合可能在某个时间点是空的,这会使GroupBox
崩溃。当收GroupBox
合时,它将DataGrid
从视图中删除其内容()。
随着DataGrid
从视图中删除,将Binding
不再能够找到它的参考,所以它打破。
如果您是我,则将GroupBox
Visibility
直接绑定到ViewModel属性,而不是将其绑定到DataGrid
。
<GroupBox ....
Visibility="{Binding HasItems,
Converter={StaticResource BooleanToVisibilityConverter}}">
<DataGrid x:Name="SomeDataGrid"
IsReadOnly="True"
ItemsSource="{Binding Items}"/>
</GroupBox>
在ViewModel中:
public bool HasItems
{
get
{
return Items != null && Items.Count() > 0;
}
}
public IEnumerable Items
{
get
{
// ...
}
set
{
// ...
RaisePropertyChanged("HasItems");
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句