Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在listview中仅刷新一列_C#_Listview_Refresh - Fatal编程技术网

C# 如何在listview中仅刷新一列

C# 如何在listview中仅刷新一列,c#,listview,refresh,C#,Listview,Refresh,有没有办法只刷新listview的一列 Listview1.Items.Refresh()刷新整个listview,但我只想刷新一列这是更新listview中单个属性的示例 该窗口(包含一个列表视图和一个按钮) 在视图中,每个项目都有两个TextBlock。按下按钮时,第一项的属性First将更新。也许这个示例代码可以帮助您解决问题RelayCommand是我对ICommand的实现,我想你没有使用WPF,是吗?不幸的是,我不担心?如果您遵循MVVM模式,使用WPF可以轻松完成任务。你能给我们看

有没有办法只刷新listview的一列


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");
        }
    }
}