Итак, я использую Cliburn Micro, и у меня есть коллекция Bindable, давайте называть ее пользователями.
public BindableCollection<UserModel> Users
{
get { return _users; }
set
{
_users = value;
NotifyOfPropertyChange(() => Users);
}
}
Теперь это связано с сеткой данных с двумя столбцами FirstName и LastName.
На другой панели выбранный элемент сетки данных будет установлен
<DataGrid x:Name="AllUsers" SelectionMode="Single" Margin="5"
SelectionUnit="FullRow" AutoGenerateColumns="False"
CanUserAddRows="False" CanUserDeleteRows="False"
CanUserReorderColumns="False"
IsReadOnly="True" Style="{DynamicResource DataGridUsers}"
SelectedItem="{Binding Path=SelectedUser, Mode=TwoWay}"
cal:Message.Attach="[Event MouseDoubleClick] = [Action DoubleClickUser()]">
<DataGrid.Columns>
<DataGridTextColumn Header="First Name" Binding="{Binding Path=FirstName}" Width="*"/>
<DataGridTextColumn Header="Last Name" Binding="{Binding Path=LastName}" Width="*"/>
</DataGrid.Columns>
</DataGrid>
Затем я создал TextBoxFirstName и установил значение, только если оно не равно нулю
<DockPanel>
<Label x:Name="LabelFirstName" Width="80" HorizontalContentAlignment="Left" VerticalAlignment="Center" Foreground="#FFAD231F" FontFamily="Lucida Sans Unicode" FontSize="12" >First Name</Label>
<TextBox x:Name="TextBoxFirstName" Margin="0,0,5,0" Text="{Binding
UpdateSourceTrigger=PropertyChanged, Path=TextBoxFirstName,
ValidatesOnDataErrors=true, NotifyOnValidationError=true}"
HorizontalAlignment="Stretch" Height="23" TextAlignment="Center" TextWrapping="NoWrap" VerticalAlignment="Top" Style="{StaticResource RoundedTextBox}" FontFamily="Lucida Sans Unicode"/>
</DockPanel>
Проверка моей ошибки в текстовом поле:
public string this[string columnName]
{
get
{
string result = null;
if (columnName == "TextBoxFirstName")
{
if (string.IsNullOrEmpty(TextBoxFirstName))
{
result = "Please enter a First Name";
}
else
{
SelectedUser.FirstName = TextBoxFirstName;
NotifyOfPropertyChange(() => SelectedUser);
}
}
return result;
}
}
Теперь я знаю, что SelectedUser.FirstName обновляется так, как если бы я установил привязку к другому текстовому полю для SelectedUser.FirstName, он обновляется, как и ожидалось, но не обновляет ли Datagrid при его изменении?
но если я обновлю значение во втором текстовом поле (с привязкой SelectedUser.FirstName), оно обновит сетку данных,
AnyIdeas ??
В основном я хочу обновить сетку данных только в том случае, если значение в текстовом поле проходит проверку.
Предположим, я не хочу редактировать значения в самой сетке данных.
Сводя меня с ума, я знаю, что это должно быть так, как он уведомляет, но я не могу заставить его работать, и я довольно новичок в c # и MVVM и WPF, любая помощь будет принята с благодарностью. спасибо