【发布时间】:2015-06-12 13:35:21
【问题描述】:
有人对如何解决我的问题有任何建议吗?我有一个绑定到ModelCheckoutRecord 对象(ListModelCheckoutRecords)的集合的数据网格。我将所选项目绑定到ModelCheckoutRecord (SelectedItemModelCheckoutRecord)。在所选项目的绑定中,我想更新另一个数据网格和网格拆分器 (ResponseVisibility) 的可见性绑定。从其他绑定更新绑定的功能似乎不起作用?
我的 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。在这种情况下,它可能永远不会为空,因此可见性将始终可见。在这里重新思考你的逻辑。