2012-01-04 32 views
0

Wpf Datagridに編集、更新、キャンセルボタンがあります。最初に編集ボタンが表示され、編集ボタンの更新とキャンセルボタンがクリックされたときに表示されます。Wpf Datagridで選択した行の追加ボタンを表示する方法

ここで問題となるのは、編集ボタンをクリックすると、更新およびキャンセルボタンがグリッド内のすべての行に表示されます。私はそれがグリッド内の選択された行に対してのみ表示されるようにします。

<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; 
    } 
+0

これはおそらくあなたがこれをやったかを知ることは役に立ちます... –

答えて

0

クリックし、[編集]ボタンの親に移動し、唯一の彼のチャイルズボタン(アップデート - キャンセル)を取得あなたのボタンを有効にする前にのみ、これらの二つのボタンのための可視性を変更します。

関連する問題