【问题标题】:Binding to Object Property in ViewModel issue在 ViewModel 问题中绑定到对象属性
【发布时间】:2016-06-21 13:04:04
【问题描述】:

不知道为什么这不起作用...下面是我的 ViewModel,它设置为我的 View DataContext。

public class UploadViewModel : CrudVMBase
    {
        #region Commands
        public CommandVM UploadButtonCommand { get; set; } =
            new CommandVM
            {
                CommandDisplay = "Perform Upload",
                IconGeometry = App.Current.Resources["pencil30"] as Geometry,
                Message = new CommandMessage { Command = CommandType.UploadFromCamera }
            };
        #endregion End Commands

        #region Public Properties
        UploadInitiation UploadObject { get; set; } = new UploadInitiation();
        #endregion End Public Properties

        public UploadViewModel()
        {

        }

下面是 UploadInitiation 类

public class UploadInitiation : Common.NotifyUIBase
    {
        #region Public Properties
            public ObservableCollection<UploadStep> Steps { get; set; } = new ObservableCollection<UploadStep>();
            public int UploadProgress { get; set; } = 45;
            public string UploadTask { get; set; } = "Idle...";
            public bool UploadEnabled { get; set; } = false;
            public bool UploadBegin { get; set; } = false;
        #endregion END Public Properties

        public UploadInitiation()
        {
            // Populate steps required, ensure upload returns UI updates
            Steps.Add(new UploadStep { Message = "Seperate upload to new thread...", Complete = false, Error = null });
            Steps.Add(new UploadStep { Message = "Generate new file names...", Complete = false, Error = null });
            Steps.Add(new UploadStep { Message = "Render Thumbnails, add to database...", Complete = false, Error = null });
            Steps.Add(new UploadStep { Message = "Move images ready for print...", Complete = false, Error = null });
        }
    }

这是我的绑定,你可以看到我试图绑定到UploadProgress 属性。

<ProgressBar Style="{StaticResource CircularProgress}" Width="180" Value="{Binding UploadObject.UploadProgress}" />

这是错误

System.Windows.Data 错误:40:BindingExpression 路径错误: 在“对象”“UploadViewModel”上找不到“UploadObject”属性 (哈希码=33902366)'。 BindingExpression:Path=UploadObject.UploadProgress; DataItem='UploadViewModel' (HashCode=33902366);目标元素是 '进度条'(名称='');目标属性是“值”(类型“双”)

【问题讨论】:

    标签: c# wpf mvvm datacontext access-modifiers


    【解决方案1】:

    您需要将属性的范围声明为public,否则默认为私有。因此在绑定时是不可见的。

    public UploadInitiation UploadObject { get; set; } = new UploadInitiation();
    

    【讨论】:

    • 我真是个白痴!我确信我已经做到了……我什至读了很多遍!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2011-02-01
    • 2011-08-26
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多