我正在尝试向XamDataPresenter中的未绑定字段添加按钮。
这是按钮模板:
<Style x:Key="CancelButtonTemplate" TargetType="{x:Type igDP:CellValuePresenter}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}">
<Button x:Name="CancelButton" Content="Cancel" Command="{Binding CancelButtonCommand}" Width="80" Height="20" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这是XamDataPresenter中的未绑定字段:
<igDP:UnboundField Name="CancelOrder" Label="Cancel Order" Column="11">
<igDP:UnboundField.Settings>
<igDP:FieldSettings CellValuePresenterStyle="{StaticResource CancelButtonTemplate}" CellHeight="12" CellWidth="50">
</igDP:FieldSettings>
</igDP:UnboundField.Settings>
</igDP:UnboundField>
</igDP:FieldLayout.Fields>
按钮绑定的“CancelButtonCommand”是viewmodel中的公共属性,我已经验证它可以使用XamDataPresenter外部的按钮而不使用模板。
按钮显示在网格中,但按下时没有任何反应。
我做错了什么?
答案 0 :(得分:1)
我相信你需要在风格中添加一点你的装订。尝试改为:
<Button Command="{Binding DataContext.CancelButtonCommand, RelativeSource={RelativeSource AncestorType={x:Type igDP:XamDataGrid}}}"
CommandParameter="{Binding}">
您使用的是XamDataPresenter还是XamDataGrid?如果是presenter,请将上面的x:Type更改为XamDataPresenter而不是XamDataGrid
另外:如果我记得,我必须添加CommandParameter,以便命令知道要操作哪一行,我需要在该方法中使用SelectedItem。否则,每个按钮的行为都完全相同。就我而言,每个按钮都应该对它所在行的对象做一些事情。
答案 1 :(得分:1)
使用如下按钮(元素绑定):
<Button x:Name="CancelButton" Content="Cancel" Command="{Binding ElementName=theotherbuttonworkingthiscommand,Path=DataContext.CancelButtonCommand}" Width="80" Height="20" />
或使用相对来源绑定:
<Button Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type window}},Path=DataContext.CancelButtonCommand}">