Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使Wpf Datagrid中所选行的添加按钮可见_Wpf - Fatal编程技术网

如何使Wpf Datagrid中所选行的添加按钮可见

如何使Wpf Datagrid中所选行的添加按钮可见,wpf,Wpf,我有一个带有编辑、更新和取消按钮的Wpf数据网格。最初,“编辑”按钮变为可见,单击“编辑”按钮“更新”和“取消”按钮变为可见 这里的问题是,当我单击编辑按钮时,网格中的所有行都可以看到更新和取消按钮。我希望它仅对网格中的选定行可见 <DataGridTemplateColumn> <DataGridTemplateColumn.CellTemplate> <DataTemplate>

我有一个带有编辑、更新和取消按钮的Wpf数据网格。最初,“编辑”按钮变为可见,单击“编辑”按钮“更新”和“取消”按钮变为可见

这里的问题是,当我单击编辑按钮时,网格中的所有行都可以看到更新和取消按钮。我希望它仅对网格中的选定行可见

<DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                   <DataTemplate>
                     <StackPanel Name="Stkbuttons">
                           <Button Name="BtnEdit" Content="Edit" Width="Auto" Click="BtnEdit_Click" Visibility="{Binding RelativeSource={RelativeSource                         FindAncestor, AncestorType={x:Type Window}}, Path=BtnEditVisibility}"></Button>
                          <Button Name="BtnUpdate" Content="Update" Width="Auto" Click="BtnUpdate_Click" Visibility="{Binding RelativeSource=                           {RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=BtnUpdateVisibility}"></Button>
                           <Button Name="BtnCancel" Content="Cancel" Width="Auto" Click="BtnCancel_Click" Visibility="{Binding RelativeSource=                          {RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=BtnCancelVisibility}"></Button>
                      </StackPanel>
                  </DataTemplate>
             </DataGridTemplateColumn.CellTemplate>

在启用按钮之前,请转到单击的编辑按钮的父按钮,仅获取其子按钮(更新-取消),并仅更改这两个按钮的可见性。

了解您是如何做到这一点的可能会有所帮助。。。
public static readonly DependencyProperty BtnEditVisibilityProperty = DependencyProperty.Register("BtnEditVisibility", typeof(Visibility), typeof(OrderExecution));
     public Visibility BtnEditVisibility
     {
         get { return (Visibility)GetValue(BtnEditVisibilityProperty); }
         set { SetValue(BtnEditVisibilityProperty, value); }
     }

public static readonly DependencyProperty BtnUpdateVisibilityProperty = DependencyProperty.Register("BtnUpdateVisibility", typeof(Visibility), typeof(OrderExecution));
     public Visibility BtnUpdateVisibility
     {
         get { return (Visibility)GetValue(BtnUpdateVisibilityProperty); }
         set { SetValue(BtnUpdateVisibilityProperty, value); }
     }

public static readonly DependencyProperty BtnCancelVisibilityProperty = DependencyProperty.Register("BtnCancelVisibility", typeof(Visibility), typeof(OrderExecution));
     public Visibility BtnCancelVisibility
     {
         get { return (Visibility)GetValue(BtnCancelVisibilityProperty); }
         set { SetValue(BtnCancelVisibilityProperty, value); }
     }

private void Window_Loaded(object sender, RoutedEventArgs e)
     {
          // By default display editButton
         BtnUpdateVisibility = Visibility.Collapsed;
         BtnCancelVisibility = Visibility.Collapsed;
     }

private void BtnUpdate_Click(object sender, RoutedEventArgs e)
     {
         BtnEditVisibility = Visibility.Visible;
         BtnUpdateVisibility = Visibility.Collapsed;
         BtnCancelVisibility = Visibility.Collapsed;
     }

 private void BtnEdit_Click(object sender, RoutedEventArgs e)
     {
        BtnEditVisibility = Visibility.Collapsed;
         BtnUpdateVisibility = Visibility.Visible;
         BtnCancelVisibility = Visibility.Visible;
    }