- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个自定义控件,它具有以下依赖属性
public static readonly DependencyProperty PrintCommandProperty = DependencyProperty.Register(
"PrintCommand",
typeof(ICommand),
typeof(ExportPrintGridControl),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.Inherits));
public ICommand PrintCommand
{
get { return (ICommand)GetValue(PrintCommandProperty); }
set { throw new Exception("ReadOnly Dependency Property. Use Mode=OneWayToSource"); }
}
在我的控件的构造函数中,我正在设置属性的默认值:
public MyControl()
{
this.SetValue(PrintCommandProperty, new DelegateCommand<object>(this.Print));
}
然后我尝试将该属性绑定(bind)到我的 ViewModel,以便我可以访问该属性并调用打印命令。
<controls:MyControl PrintCommand="{Binding PrintCommand, Mode=OneWayToSource}"/>
但是,XAML 中的绑定(bind)会导致属性值设置为 null。如果我删除 XAML 中的绑定(bind),默认属性值将在我的控件的构造函数中正确设置。
让我的 ViewModel 调用控件的 Print 方法的正确方法是什么?
最佳答案
我刚刚重读了你的问题,听起来你正试图从你的 View 模型中调用你的 View 中的方法。这不是 View 模型的用途。
如果这确实是您想要的,则无需使用命令:您的 View 所需要做的就是调用:
view.Print()
如果你想改变打印命令,那么你确实需要一个如图所示的属性。在这种情况下,您的 View 模型会调用
view.PrintCommand.Execute()
在这两种情况下,您都不需要数据绑定(bind)。
一种更类似于 WPF 的方法是将绑定(bind)添加到控件的 CommandBindings
集合以处理内置的 Application.Print
命令。然后 View 模型可以在它想要打印时使用 RaiseEvent
发送这个命令。
请注意,CommandBinding 是与 Binding 完全不同的对象。不要混淆两者。 CommandBinding 用于处理路由命令。 Binding 用于更新属性值。
关于c# - WPF 反向绑定(bind) OneWayToSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2365203/
我正在使用 OneWayToSource绑定(bind),它似乎总是将我的源属性设置为空。为什么呢?这给我带来了麻烦,因为我需要源属性中目标属性的值而不是空值。 这是我的代码: MyViewModel
我有一个 RadioButton其 IsChecked 的元素属性绑定(bind)到 MyProperty在 ViewModel . Binding有模式OneWayToSource由于某些原因,它会
为什么 OneWayToSource 绑定(bind)会重置我的目标值?这是绑定(bind)代码: SolidColorBrush brush = GetTemplateChild("PART_Pre
我最近用 Binding Mode = OneWayToSource 做了很多测试,但我仍然不知道为什么会发生某些事情。 例如,我在类构造函数中为 dependency property 设置了一个值
我有一个自定义控件,它具有以下依赖属性 public static readonly DependencyProperty PrintCommandProperty = DependencyPrope
我有 EntitiesUserControl 负责 EntitiesCount 依赖属性: public static readonly DependencyProperty EntitiesCoun
是否可以在我的模型中使用 OneWay 模式将 TextBox Text 字段绑定(bind)到属性 TextView,并绑定(bind)到另一个属性 TextInput 模式为 OneWayToSo
我需要编写一个看起来像 TextBox 的自定义控件,它包含一个名为 Refresh() 的方法,其主要目的是清除文本并回滚一些其他值。 该方法应以某种方式变得可绑定(bind),以便其他人可以将其
我在一个窗口中有一个 TextBox,我使用以下简单的转换器将其绑定(bind)到一个值: public class TestConverter : MarkupExtension, IValueCo
我正在尝试以 OneWayToSource 作为模式绑定(bind)到 Readonly 属性,但似乎无法在 XAML 中完成: 我得到: The property 'FlagThingy.IsMo
我有一个只读属性,需要在文本框中显示,并在运行时收到此错误。我设置了 IsEnabled="False"、IsReadOnly="True" - 没有运气。其他搜索说只读应该修复它,但不适合我。我有一
我正在使用 MVVM 模式并在运行我的应用程序时收到以下信息 无效操作异常TwoWay 或 OneWayToSource 绑定(bind)无法对“ViewModel.SynergyViewModel”
我对特定的 xaml 数据绑定(bind)有疑问。我有两个列表框(主要细节,所以列表框将 IsSynchronizedWithCurrentItem 设置为 true)。我希望我的 View 模型知道
当我设置目标控件的 DataContext 时,我有一个 OneWayToSource 绑定(bind),其行为不符合我的预期。源的属性被设置为默认值,而不是目标控件的属性值。 我在标准 WPF 窗口
我最近在代码中将 OneWayToSource 绑定(bind)添加到 View 模型中的只读属性。当时我不知道 .Net 4 的变化,当没有 getter 时这会导致异常: ... public
我有这个 xaml 文本框 绑定(bind)到这个属性: public double? Min { get { return min; }
OneWayToSource .NET 4.0 中的绑定(bind)似乎已损坏 我有这个简单的 Xaml 我的代码是这样的 public MainWindow() {
以下出现在数据模板中: 设置SelectedIndex 后(如上所示),绑定(bind)到Value 的OneWayToSource 不起作用。如果我不设置 SelectedIndex,则可以绑定(
我有一个绑定(bind)到 People 集合的 DataGrid。我还有一个 TextBox,它应该接受所选行中的 Name 值。然后用户可以编辑该值或保留原样。关键点是:TextBox 中显示的文
我是一名优秀的程序员,十分优秀!