我有一个自定义ICommand类,我试图添加属性“DisplayName”和“ToolTipText”:
internal class MyCommand : ICommand
{
// ...
internal string DisplayName {
get { return displayName; }
set {
if (displayName == value)
return;
if (value == null)
value = "";
displayName = value;
OnPropertyChanged(nameof(DisplayName));
}
}
internal string ToolTipText {
get { return toolTipText; }
set {
if (toolTipText == value)
return;
if (value == null)
value = "";
toolTipText = value;
OnPropertyChanged(nameof(ToolTipText));
}
}
// ...
}
我的ViewModel返回ICommand的自定义类型:
public MyCommand MyButtonCommand {
get {
return myButtonCommand?? (myButtonCommand = new MyCommand (
// ...
);
}
}
在XAML中,我将命令绑定到Button,我想从Command上的DisplayName设置按钮Content。根据答案的要求,按钮绑定是这样的:
<Button HorizontalAlignment="Right" VerticalAlignment="Center"
Margin="12,0,0,0" DockPanel.Dock="Right" TabIndex="10"
Command="{Binding MyButtonCommand, Mode=OneWay}"/>
以下结果:
Content="{Binding Command, RelativeSource={RelativeSource Self}}"
这样,按钮的内容就是Command上的ToString()。但我无法访问自定义ICommand对象的属性。
像这样的XAML语法不起作用:
Content="{Binding Command.DisplayName, RelativeSource={RelativeSource Self}}"
Content="{Binding Command/DisplayName, RelativeSource={RelativeSource Self}}"
有什么答案吗?
...现在回答:我的DisplayName和ToolTipText属性只需要公开......
答案 0 :(得分:0)
以下xaml都在运作
经典的,标准的
Content="{Binding MyButtonCommand.DisplayName}" Command="{Binding MyButtonCommand}"
非常不寻常的
`Content="{Binding Command.DisplayName, RelativeSource={RelativeSource Self}}" Command="{Binding MyButtonCommand}`"
假设MyCommand和DisplayName都是公开且不是内部
public class MyCommand : ICommand
{
public string DisplayName
并且DisplayName有一个值...