Я пытаюсь сделать группу привязки для вычисления, если строка действительна на основе 3 текстовых полей в datagrid.Группы привязки XAML
Я создал класс ValidationRule, а затем в моей сетке у меня есть:
<DataGrid.BindingGroup>
<BindingGroup Name="RowBindingGroup">
<BindingGroup.ValidationRules>
<util:MinMaxParValidationRule ValidationStep="CommittedValue" />
</BindingGroup.ValidationRules>
</BindingGroup>
</DataGrid.BindingGroup>
и
<TextBox.Text>
<Binding Path="ParStockLevel" UpdateSourceTrigger="PropertyChanged" BindingGroupName="RowBindingGroup" />
</TextBox.Text>
Мой класс правило проверки выглядит
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
ValidationResult result = ValidationResult.ValidResult;
BindingGroup bindingGroup = (BindingGroup)value;
StockInformationDVM row = (StockInformationDVM)bindingGroup.Items[0];
Теперь, когда я бегу приложение, значение, которое входит в класс правил проверки, всегда является первой строкой в моем datagrid, nev (если только вы не проверяете первую строку!)
Я не сделал этого раньше, и примеры, которые я нахожу arent, используя MVVM, могут возникнуть проблемы.
Спасибо за быстрый ответ, к сожалению, он не работает совершенно верно, хотя кажется, что bindingGroup.Items [0]; теперь не тип элемента, к которому привязан строка, а скорее ViewModel, который запустил ViewModel, datagrid находится в – Purplegoldfish
@Purplegoldfish - Это странно, потому что я только что создал тестовый проект, и все отлично работает ... Используете ли вы DataGridTemplateColumn 'для привязок? Пожалуйста, дважды проверьте, что строки действительно имеют объект типа 'StockInformationDVM' как свой' DataContext'. –
Я использую DataGridTemplateColumn для столбцов, а ItemSource дефинитивно связан с StockInformationDVM. Я не имею DataContext = "", указанный в datagrid, хотя я предположил, что набор ItemsSource будет достаточным. – Purplegoldfish