В вопросе Получение данных во ViewModel из делегированного объекта по поводу приведённого ниже кода View с привязками и паттерна MVVM в целом я понял следующее:
В отображении имеющихся данных у нас свойства экземпляров, которые передаются из VM и имена свойств экземпляров не могут не совпадать со именами свойств модели. Что касается полей для ввода новых данных, то там уже свойства VM. Получив значения этих свойств, мы используем их в команде добавления нового экземпляра.
<!-- Отображение имеющихся данных -->
<ListView ItemsSource="{Binding Path=staff}">
<ListView.View>
<GridView>
<!-- ... -->
<GridViewColumn DisplayMemberBinding="{Binding PersonStringifiedId, UpdateSourceTrigger=PropertyChanged}">
<GridViewColumn DisplayMemberBinding="{Binding PersonFullName, UpdateSourceTrigger=PropertyChanged}" />
<!-- ... -->
<!-- Ввод новых данных -->
<TextBox>
<TextBox.Text>
<Binding Path="personStringifiedId"/>
</TextBox.Text>
</TextBox>
<TextBox>
<TextBox.Text>
<Binding Path="personFullName"/>
</TextBox.Text>
</TextBox>
<Button Command="{Binding addNewPersonCommand}"/>
К сожалению, одного только понимания выше сказанного не хватило, чтобы благополучно связать новое свойство VM
с элементом View
. По образцу в ответе на вопрос Добавление чекбоска в автоматически генерируемую таблицу я попытался привязать атрибуту IsChecked
чекбокса свойство IsSelected
ViewModel. Не вижу причины вводить это свойство в модель, потому на данный момент оно есть только во ViewModel
.
<ListView ItemsSource="{Binding Path=Staff}">
<!-- ... -->
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Mode=TwoWay,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}},
Path=IsSelected,
UpdateSourceTrigger=PropertyChanged}"
При следующем коде VM реакция на изменение значения чекбокса (System.Diagnostics.Debug.WriteLine
) отсуствует:
private bool personSelected = false; // по умолчанию
public bool IsSelected {
get { return personSelected; }
set {
personSelected = value;
System.Diagnostics.Debug.WriteLine(personSelected);
OnPropertyChanged("IsSelected");
}
}
Чего я недопонял в предыдущем вопросе?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется сервер класса TcpListenerОн принимает входящие подключения методом BeginAcceptTcpClient (AsyncCallback, Object)
Нашёл на просторах StackOverflow пример как читать данные из excelНо вылетают ошибки
Когда задан Padding для параграфа, то его формат передается следующей строке, после нажатия EnterИ убрать его получается только вручную