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