Я сделал небольшую программу, где у меня есть все файлы определенной папки и определенного типа в одном списке. Мне нравится изменять имя файла непосредственно внутри ListView.File ListView, изменить имя direct в ListView, WPF C# MVVM
Я создал ListView с текстовыми полями в одном столбце, а имя файла записано внутри текстового поля. Теперь я могу изменить имя в текстовом поле, но не буду менять имя файла. Как сделать это соединение между текстовым полем в ListView и методе, который будет меняться? Да, я здесь немного потерялся. Я довольно свежий в MVVM WPF.
Мой XAML код ListView:
<ListView Name="lvfiles" Grid.Column="0" ItemsSource="{Binding fileslist}" SelectionMode="Single" SelectedItem="{Binding SelectedFiles}" DataContext="{Binding }" Height="140">
<ListView.View>
<GridView x:Name="gridFiles">
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Tag="{Binding ID}" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=IsSelected}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn x:Name="FileName" Header="Name">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding FileName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn x:Name="FileCreated" Header="Created" DisplayMemberBinding="{Binding FileCreated}" Width="Auto"/>
<GridViewColumn x:Name="FileChanged" Header="Changed" DisplayMemberBinding="{Binding FileChanged}" Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
Мои ViewModel является:
public class Files : ViewModelBase
{
private int fileid;
private string filename;
private string filecreated;
private string filechanged;
public string FileName
{
get { return filename;}
set
{
filename = value;
NotifyPropertyChanged("FileName");
}
}
я обновить свой текущий ViewModel. Спасибо за твое, я попробую. Я не знал, могу ли я сделать прямо в ViewModel или нет. Но ваш код будет обновлять имя одновременно - в режиме реального времени? Потому что теперь изменится для каждого более позднего ввода (или нет?). Это правда, что я не хочу, чтобы некоторые кнопки подтверждали это, но, может быть, подождите 2 секунды без каких-либо изменений? Или что-то подобное? ... Я пробую ваш код и да его обновление каждое письмо. Можно ли обновить в конце? Да, я знаю, что это намного сложнее? Или нет? – esispaned
Чтобы избежать обновления FileName с каждым измененным символом, измените UpdateSourceTrigger для вашего TextBox на LostFocus в xaml. Теперь это «PropertyChanged» – VMaleev