【发布时间】:2016-03-31 11:11:52
【问题描述】:
我有一个列表框,它绑定到我的视图模型中的一个可观察集合(用户控制数据上下文)。
DeviceDetector driveDetector;
public DriveSelector()
{
InitializeComponent();
driveDetector = DeviceDetector.Instance;
DataContext = driveDetector;
}
这是我的列表框代码
<ListBox Style="{StaticResource ListBoxStyle}" ItemsSource="{Binding DriveCollection}">
<ListBox.ItemTemplate>
<DataTemplate>
<Button Width="70" Style="{StaticResource DriveButtonStyle}" Command="{Binding SimpleMethod}">
<StackPanel>
<Image Source="{Binding Image}" Style="{StaticResource DriveImageStyle}"/>
<Label Content="{Binding Name}" Style="{StaticResource DriveLabelStyle}"/>
</StackPanel>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我已经实现了 ICommand,当我像这样绑定到列表框外的命令时:
<Button Command="{Binding SimpleMethod}"/>
一切都很好。但是,当我尝试将命令绑定到列表框数据模板内的按钮时,我收到此错误:
System.Windows.Data 错误:40:BindingExpression 路径错误: 在“对象”“DriveInfo”上找不到“SimpleMethod”属性 (哈希码=6377350)'。绑定表达式:路径=简单方法; DataItem='DriveInfo' (HashCode=6377350);目标元素是“按钮” (名称='');目标属性是“Command”(输入“ICommand”)
我可以看到按钮的数据上下文是模型的,因此找不到方法“SimpleMethod”。有没有办法可以将命令绑定到列表框本身的数据上下文?
【问题讨论】:
-
您可以为您的按钮编写自定义行为。这样你就可以将它绑定到你的按钮上。不知道,这个方法应该什么时候触发?