C# 刷新Icommand上的Textblock值并调用MVVM(WPF)

C# 刷新Icommand上的Textblock值并调用MVVM(WPF),c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,朋友们好,我正在使用MVVM桌面应用程序。我的项目中有放置标签 第一次标签是绑定的,但它不会在Icommand调用时刷新标签的值。请帮助我以下是我的代码: //视图模型 private string _Commentcount=string.Empty; public string CountComment { get { return _Commentcount; } set { if (_Commentcount ==

朋友们好,我正在使用MVVM桌面应用程序。我的项目中有放置标签 第一次标签是绑定的,但它不会在Icommand调用时刷新标签的值。请帮助我以下是我的代码:

//视图模型

private string _Commentcount=string.Empty;
public string CountComment
{
    get
    {
        return _Commentcount;
    }
    set
    {
        if (_Commentcount == value)
        {
            return;
        }
        _Commentcount = value;
        RaisePropertyChanged("CountComment");
    }       
}

public void GetCommentsByThreadID(string ThreadID)
{
    BindAllComments.Clear();
    List<ProjectTabModel> cmnts = ProjectTabModel.GetCommentsByThread(ThreadID);
    ObservableCollection<ProjectTabModel> obsrvblCmnts = new ObservableCollection<ProjectTabModel>(cmnts);
    var commentcnt = obsrvblCmnts.Count;

    if (obsrvblCmnts.Count > 0)
    {
        CountComment = cmnts.Count.ToString();
        RaisePropertyChanged("CountComment");
        foreach (var item in obsrvblCmnts)
        {
            BindAllComments.Add(item);
        }
    }
    else
    {
        CountComment = "0";
        RaisePropertyChanged("CountComment");
        foreach (var item in obsrvblCmnts)
        {
            BindAllComments.Add(item);
        }
    } 


    //   return cmnts;
}
//////////XAML/////////////////////

<TextBlock Text="{Binding CountComment,UpdateSourceTrigger=Default, Mode=TwoWay}" Foreground="{Binding ElementName=Projectnamecolor,Path=Foreground}" x:Name="lblcommentcount" Canvas.Left="190" Canvas.Top="300" FontWeight="Bold" FontFamily="segoe_uilight" FontSize="18"></TextBlock>
//在这里,我调用我的方法GetCommentsByThreadID

private class MouseUpCommand : ProjectTabViewModel, ICommand
{
    public event EventHandler CanExecuteChanged;
    public void Execute(object sender)
    {
        var e = (MouseButtonEventArgs)sender;
        var device = e.MouseDevice.DirectlyOver;
        UIElement element = device as UIElement;
        while (element != null)
        {
            string ThreadID = string.Empty;
            if (element is TextBlock)
            {
                var Item = element as TextBlock;
                ThreadID = Item.Tag.ToString();
                GetCommentsByThreadID(ThreadID);
                // ProjectTabViewModel obj = new ProjectTabViewModel();
                GlobalThreadID = ThreadID;
                List<ProjectTabModel> lst = new List<ProjectTabModel>();
                lst = ProjectTabModel.GetThreadDetails(ThreadID);
                ThreadDetails(lst);
                break;
            }
            if (element is Canvas)
            {
                var Item = element as Canvas;
                ThreadID = Item.Tag.ToString();
                // ProjectTabViewModel obj = new ProjectTabViewModel();
                //  obj.GlobalThreadID = ThreadID;
                GetCommentsByThreadID(ThreadID);
                GlobalThreadID = ThreadID;
                List<ProjectTabModel> lst = new List<ProjectTabModel>();
                lst = ProjectTabModel.GetThreadDetails(ThreadID);
                ThreadDetails(lst);
                break;
            }
            if (element is StackPanel)
            {
                var Item = element as StackPanel;
                ThreadID = Item.Tag.ToString();
                // ProjectTabViewModel obj = new ProjectTabViewModel();
                //        obj.GlobalThreadID = ThreadID;
                GetCommentsByThreadID(ThreadID);
                GlobalThreadID = ThreadID;
                List<ProjectTabModel> lst = new List<ProjectTabModel>();
                lst = ProjectTabModel.GetThreadDetails(ThreadID);
                ThreadDetails(lst);
                break;
            }
        }
    }

    public bool CanExecute(object parameter)
    {
        return true;
    }
}

输出窗口中是否有错误?@nit否我没有收到任何错误。第一次计数仍保留在标签中,但第二次单击另一个线程时,它不会刷新。您确定您的值正在更改吗?也许您的ObservableCollection始终包含相同数量的ProjectTabModel。您可以删除RaisePropertyChangedCountComment;在你的GetCommentsByThreadID@WiiMaxx我的ObservableCollection不包含重复计数。我已经删除了RaisePropertyChangedCountComment,但无法正常工作。我不知道这意味着什么,请告诉我是谁发出了命令,是某个按钮还是其他ICommandSource控件,还是在代码ICommand.Execute中调用它