У меня есть следующий пользовательский интерфейс WPF: Список, связанный с коллекцией. Существует таблица данных, которая показывает конкретные данные для каждого элемента в этой коллекции. Шаблон данных использует панель стека для отображения полей, а также владеет группой привязок. Для каждого из элементов пользователь вводит информацию, и она будет подтверждена. Если это не удается, информация об ошибке отображается на панели стека. В дополнение к показу здесь ошибок, я хочу иметь возможность пометить хост ListView некоторой информацией, что есть проблема. Таким образом, я могу повлиять на остальную часть пользовательского интерфейса, основываясь на том, есть ли ошибка или нет. Если я переместу Binding Group вверх в ListView, я достигну этого. Однако я потеряю панель стека, способную отображать ошибки.
Таким образом, я хочу иметь возможность распространять информацию об ошибке (или, по крайней мере, флаг, указывающий на ошибку) от шаблона данных до хост-объекта (представление списка в моем случае). Я пытаюсь сделать это только с привязкой, чтобы мне не пришлось писать какой-либо код позади. Но я не знаю, как это сделать.
Вот небольшой фрагмент кода:
<ListView Name="LiquidDetailsList" Grid.Row="2" DataContext="{Binding BatchToExecute}" ItemsSource="{Binding LiquidDefinitionList}" IsSynchronizedWithCurrentItem="True">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,5,0,0" Name="LiquidRecord">
<StackPanel.BindingGroup>
<BindingGroup Name="LiquidValidation" NotifyOnValidationError="True" />
</StackPanel.BindingGroup>
<StackPanel Orientation="Horizontal" >
<TextBox Name="BatchLiquidLocation" Width="65" Height="25" Margin="5,5,5,5" HorizontalAlignment="Center" HorizontalContentAlignment="Center" Style="{StaticResource standardTextBoxErrorStyle}" Background="PowderBlue" SourceUpdated="LiquidComponent_SourceUpdated" TextChanged="LiquidComponent_TextChanged">
<Binding BindingGroupName="LiquidValidation" Path="Location" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True" />
</TextBox>
<TextBox Name="BatchLiquidVolume" Margin="10,5,0,5" Width="65" Height="25" HorizontalAlignment="Center" HorizontalContentAlignment="Center" Style="{StaticResource standardTextBoxErrorStyle}" Background="PowderBlue" Tag="VOLUME" SourceUpdated="LiquidComponent_SourceUpdated" TextChanged="LiquidComponent_TextChanged">
<Binding BindingGroupName="LiquidValidation" Path="Volume" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True" />
</TextBox>
<CheckBox Name="BatchLiquidReuseTip" Margin="10,5,0,5" Width="25" HorizontalAlignment="Center" HorizontalContentAlignment="Center" Background="PowderBlue" Tag="REUSETIP" VerticalAlignment="Center">
<CheckBox.IsChecked>
<Binding BindingGroupName="LiquidValidation" Path="ReuseTip" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True" />
</CheckBox.IsChecked>
</CheckBox>
<Button Name="DeleteLiquidButton" Margin="10,5,5,5" Width="25" Height="25" Click="DeleteLiquidButton_Click" HorizontalAlignment="Center">X</Button>
</StackPanel>
<ItemsControl Margin="10,0,0,0" ItemsSource="{Binding Path=(Validation.Errors), ElementName=LiquidRecord}" IsTabStop="False">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Label Foreground="Red" Content="{Binding Path=ErrorContent}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>