在 ViewModel 问题中绑定到对象 属性
Binding to Object Property in ViewModel issue
不确定为什么这不起作用...下面是我的 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 class
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 Error: 40 : BindingExpression path error:
'UploadObject' property not found on 'object' ''UploadViewModel'
(HashCode=33902366)'.
BindingExpression:Path=UploadObject.UploadProgress;
DataItem='UploadViewModel' (HashCode=33902366); target element is
'ProgressBar' (Name=''); target property is 'Value' (type 'Double')
您需要将 属性 的作用域声明为 public,否则默认为私有。因此绑定时不可见
public UploadInitiation UploadObject { get; set; } = new UploadInitiation();
不确定为什么这不起作用...下面是我的 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 class
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 Error: 40 : BindingExpression path error: 'UploadObject' property not found on 'object' ''UploadViewModel' (HashCode=33902366)'. BindingExpression:Path=UploadObject.UploadProgress; DataItem='UploadViewModel' (HashCode=33902366); target element is 'ProgressBar' (Name=''); target property is 'Value' (type 'Double')
您需要将 属性 的作用域声明为 public,否则默认为私有。因此绑定时不可见
public UploadInitiation UploadObject { get; set; } = new UploadInitiation();