有没有人有任何关于如何解决我的问题的建议?我有一个数据网格绑定到ModelCheckoutRecord
对象集合(ListModelCheckoutRecords
)。我将所选项绑定到ModelCheckoutRecord
(SelectedItemModelCheckoutRecord
)。在所选项目的绑定中,我想更新另一个数据网格和网格分隔器的可见性绑定(ResponseVisibility
)。更新来自其他绑定的绑定的能力似乎不起作用?是使用MVVM中的其他绑定更新WPF中的绑定
这个我的XAML行,如下所示:
<Grid>
<Grid.RowDefinitions>
<View:RowDefinitionExtended Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<DataGrid AutoGenerateColumns="True" ItemsSource="{Binding ListModelCheckoutRecord}" SelectedItem="{Binding SelectedModelCheckoutRecord}" MouseLeftButtonDown="DataGrid_MouseLeftButtonDown" CommandManager.PreviewExecuted="DataGrid_DeletePreviewExecuted" IsReadOnly="False" CanUserAddRows="False" CanUserDeleteRows="True" Margin="15" Grid.Row="0"/>
<GridSplitter HorizontalAlignment="Stretch" Visibility="{Binding ResponseVisibility}" Grid.Row="1"/>
<DataGrid AutoGenerateColumns="True" ItemsSource="{Binding ListModelResponseRecord}" SelectedItem="{Binding SelectedModelResponseRecord}" MouseLeftButtonDown="DataGrid_MouseLeftButtonDown" IsReadOnly="False" CanUserAddRows="False" CanUserDeleteRows="False" Visibility="{Binding ResponseVisibility}" Margin="15" Grid.Row="2"/>
</Grid>
害我麻烦的精简代码如下:
private Visibility responseVisibility = Visibility.Visible;
public Visibility ResponseVisibility
{
get { return responseVisibility; }
set
{
if (value == responseVisibility)
{
return;
}
responseVisibility = value;
RaisePropertyChanged("ResponseVisibility");
}
}
private List<ModelCheckoutRecord> listModelCheckoutRecord;
public List<ModelCheckoutRecord> ListModelCheckoutRecord
{
get { return listModelCheckoutRecord; }
set
{
if (value == listModelCheckoutRecord)
{
return;
}
listModelCheckoutRecord = value;
RaisePropertyChanged("ListModelCheckoutRecord");
ResponseVisibility = Visibility.Collapsed;
}
}
private ModelCheckoutRecord selectedModelCheckoutRecord;
public ModelCheckoutRecord SelectedModelCheckoutRecord
{
get { return selectedModelCheckoutRecord; }
set
{
if (value == null)
{
ResponseVisibility = Visibility.Collapsed;
return;
}
else
{
ResponseVisibility = Visibility.Visible;
}
if (selectedModelCheckoutRecord == value)
{
return;
}
RaisePropertyChanged("SelectedModelCheckoutRecord");
}
}
感谢
理查德
在你的'SelectedModelCheckoutRecord',要设置'ResponseVisibility '根据所选项目是否为空。在这种情况下,它可能永远不会为空,所以可见性总是**可见。重新思考你的逻辑。 –