Что я хочу сделать, так это цветной DataGridRow красный, если проверка не удалась. Я попытался сделать это с помощью ValueConverter, но я не знаю, как передать значение из более чем одного источника привязки.Передайте значения ValueConverter из двух разных источников привязки в одиночном DataGrid
У меня есть datagrid с привязкой к коллекции объектов. Затем есть DataGridTemplateColumn с ComboBox и текстовым полем внутри (только один из них виден во время), а ComboBox не связан с привязкой связанного источника привязки коллекции.
См код:
<DataGrid Grid.Row="4" Grid.Column="0" x:Name="DGR_Slots" Grid.ColumnSpan="5" Grid.RowSpan="3" ItemsSource="{Binding ElementName=WND_ItemCraftingWindow, Path=SelectedSchematic.Slots}" AutoGenerateColumns="False" ColumnWidth="*">
<DataGrid.Resources>
<classes:ValidationConverter x:Key="ValidationConverter" />
</DataGrid.Resources>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Background" Value="{Binding Converter={StaticResource ValidationConverter}}" />
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Binding="{Binding Id}" Visibility="Collapsed"/>
<DataGridTextColumn Header="Slot Type" Binding="{Binding SlotType}" />
<DataGridTextColumn Header="Mat Type" Binding="{Binding MaterialType}" />
<DataGridTextColumn Header="Count" Binding="{Binding MaterialCount}" />
<!--<DataGridComboBoxColumn Header="Material" />-->
<DataGridTemplateColumn Header="Material">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<ComboBox Visibility="Visible" MouseDoubleClick="MaterialCell_MouseDoubleClick" ItemsSource="{Binding ElementName=WND_ItemCraftingWindow, Path=Materials}" DisplayMemberPath="Name" SelectedValuePath="Name" SelectionChanged="MaterialComboBox_SelectionChanged"/>
<TextBox Visibility="Collapsed" MouseDoubleClick="MaterialCell_MouseDoubleClick" PreviewKeyUp="MaterialCell_TextBox_PreviewKeyUp" KeyUp="MaterialCell_TextBox_KeyUp" />
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
WND_ItemCraftingWindow это окно, которое владеет DataGrid и материалы является ObservableCollection свойство внутри этого окна.
Мне нужно передать объект из коллекции DataGrid.ItemsSource (которая работает сейчас) и SelectedItem из Combobox в той же строке (я не знаю, как это сделать) в ValidationConverter.
Проверка строки может выполняться только с объектом из DataGridRow и SelectedItem из combobox.
Также я открыт для различных решений для цветной строки после такой проверки.
Ваш подход к проверке данных неверен. Вы должны использовать механизмы проверки, включенные в WPF. Посмотрите на [this] (http://blogs.msdn.com/b/wpfsdk/archive/2007/10/02/data-validation-in-3-5.aspx) сообщение в блоге для получения дополнительной информации. –
Хорошо, что я использую эти правила проверки или IDataErrorInfo, но как я могу использовать их для получения требуемых значений? – user2475983
Используйте 'IMultiValueConverter', если вам нужно отправить несколько значений из привязок xaml. –