单列中的DataGrid按钮无法正常工作

时间:2020-06-01 18:29:12

标签: c# wpf datagrid

我有这个数据网格,并放置了一行按钮(3),但是由于某种原因,我的点击只在第一个按钮(最左侧)上注册。单击我的其他两个按钮不会引发任何事件。有趣的是,我尝试删除我的第一个按钮(现在只剩下两个),然后单击左侧的按钮,但是对于右侧的按钮却无效。我不知道我在做什么错。

这是我的xaml

<Datagrid
...>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Actions" MinWidth="80">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <Button Style="{StaticResource FooActionButton}" x:Name="FooBar1"
                                            Focusable="False"
                                IsHitTestVisible="True" 
                                            Command="{Binding Path=DataContext.CommandFooBar1, RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}">
                                        <Button.Content>
                                            <Image Source="/Foo.Bar.FooBar;component/Resources/foo-bar-1.png"/>
                                        </Button.Content>
                                    </Button>
                                    <Button Style="{StaticResource FooActionButton}" x:Name="FooBar2"
                                            Focusable="False" 
                                IsHitTestVisible="True" 
                                            Command="{Binding Path=DataContext.CommandFooBar2, RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}">
                                        <Button.Content>
                                            <Image Source="/Foo.Bar.FooBar;component/Resources/foo-bar-2.png"/>
                                        </Button.Content>
                                    </Button>
                                    <Button Style="{StaticResource FooActionButton}" x:Name="FooBar3"
                                            Focusable="False" 
                                IsHitTestVisible="True" 
                                            Command="{Binding Path=DataContext.CommandFooBar3, RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}">
                                        <Button.Content>
                                            <Image Source="/Foo.Bar.FooBar;component/Resources/foo-bar-3.png"/>
                                        </Button.Content>
                                    </Button>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
    </DataGrid.Columns>
  </DataGrid>

在我的ViewModel中:

public RelayCommand<Foo> CommandFooBar1
{
    get
    {
        return _commandFooBar1 ?? (_commandFooBar1 ?? new RelayCommand<Foo>(foo=> ExecuteFooBar1(foo)));
    }
}
private RelayCommand<Foo> _commandFooBar1 = null;

与其他中继命令基本相同的代码结构。我调试了一下,碰巧最左侧的任何按钮都被触发,并且它正确地调用了它的关联函数。如上所述,我只是无法使所有3个按钮正常工作。

0 个答案:

没有答案