C# 如何在listview中仅刷新一列
有没有办法只刷新listview的一列C# 如何在listview中仅刷新一列,c#,listview,refresh,C#,Listview,Refresh,有没有办法只刷新listview的一列 Listview1.Items.Refresh()刷新整个listview,但我只想刷新一列这是更新listview中单个属性的示例 该窗口(包含一个列表视图和一个按钮) 在视图中,每个项目都有两个TextBlock。按下按钮时,第一项的属性First将更新。也许这个示例代码可以帮助您解决问题RelayCommand是我对ICommand的实现,我想你没有使用WPF,是吗?不幸的是,我不担心?如果您遵循MVVM模式,使用WPF可以轻松完成任务。你能给我们看
Listview1.Items.Refresh()
刷新整个listview,但我只想刷新一列这是更新listview中单个属性的示例
该窗口(包含一个列表视图
和一个按钮
)
在视图中,每个项目都有两个
TextBlock
。按下按钮时,第一项的属性First
将更新。也许这个示例代码可以帮助您解决问题RelayCommand
是我对ICommand
的实现,我想你没有使用WPF,是吗?不幸的是,我不担心?如果您遵循MVVM模式,使用WPF可以轻松完成任务。你能给我们看一些代码吗?你在使用MVVM吗?对不起,我不能给你看我的代码,但我可以试着解释一下我在这里做什么。我正在读取重量和尺寸值(串行端口),并在我的listview中显示这些值(在它们自己的文本框中)。我尝试过PropertyChanged事件,但由于某些原因它不起作用。是的,我正在使用mvvm。如果能知道OnPropertyChanged为什么不起作用,那就好了。但这种方法是好的。这就是我的建议。您是否可以只显示listview xaml和属性;只是重要的部分。我想这很简单,当我看到你尝试了什么。
<StackPanel>
<ListView ItemsSource="{Binding Items}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="{Binding First}" />
<TextBlock Grid.Column="1"
Text="{Binding Second}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button Command="{Binding DoSomethingCommand}"
Content="Do something" />
</StackPanel>
public class MainViewModel : INotifyPropertyChanged
{
public RelayCommand DoSomethingCommand { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
public MainViewModel()
{
Items = new ObservableCollection<ItemViewModel>
{
new ItemViewModel { First = "eins", Second = "zwei" },
new ItemViewModel { First = "drei", Second = "vier" },
new ItemViewModel { First = "fünf", Second = "sechs" }
};
DoSomethingCommand = new RelayCommand(OnDoSomething);
}
private void OnDoSomething()
{
Items.First().First = "sieben";
}
ObservableCollection<ItemViewModel> _items;
public ObservableCollection<ItemViewModel> Items
{
get
{
return _items;
}
set
{
_items = value;
OnPropertyChanged("Items");
}
}
}
public class ItemViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
string _first;
public string First
{
get
{
return _first;
}
set
{
_first = value;
OnPropertyChanged("First");
}
}
string _second;
public string Second
{
get
{
return _second;
}
set
{
_second = value;
OnPropertyChanged("Second");
}
}
}