2010-10-12 8 views
1

Я новичок в wpf. У меня есть форма DataGrid wpftoolkit и мне нужно кнопка в шаблоне, чтобы показать только при выборе строки и запись не последний (новый рекорд пункта)WPF привязывается к datagrid из шаблона

<dg:DataGrid AutoGenerateColumns="False" DockPanel.Dock="Top" 
       ItemsSource="{Binding Source={StaticResource Entries}}" 
       Name="dataGrid" > 

       <dg:DataGrid.Columns> 
        <dg:DataGridTextColumn Header="Term" Width="2*" Binding="{Binding Path=Term}"/> 
        <dg:DataGridTextColumn Header="Definition" Width="5*" Binding="{Binding Path=Definition}"/> 

        <dg:DataGridTemplateColumn Header=""> 
         <dg:DataGridTemplateColumn.CellTemplate> 
          <DataTemplate> 
           <Button Click="btnRemove_Click">Remove</Button> 
          </DataTemplate> 
         </dg:DataGridTemplateColumn.CellTemplate> 
        </dg:DataGridTemplateColumn> 

       </dg:DataGrid.Columns> 
      </dg:DataGrid> 

Как связать свойство Visibility с DataGrid?

мое не-полностью решение, которое отключает кнопку, когда строка не выбрана:

<dg:DataGridTemplateColumn > 
         <dg:DataGridTemplateColumn.CellTemplate> 
          <DataTemplate> 
           <Button Content="Remove" Click="btnRemove_Click" > 
            <Button.Style> 
             <Style TargetType="{x:Type Button}" > 
              <Setter Property="Visibility" Value="Hidden" /> 
              <Style.Triggers> 
               <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dg:DataGridRow}}, Path=IsSelected}" Value="True"> 
                <Setter Property="Visibility" Value="Visible" /> 
               </DataTrigger> 
              </Style.Triggers> 
             </Style> 
            </Button.Style> 
           </Button> 
          </DataTemplate> 
         </dg:DataGridTemplateColumn.CellTemplate> 
        </dg:DataGridTemplateColumn> 

ответ

0

Одно из решений состоит в написание ValueConverter для свойства Visibility, которая переплетена в DataRow. На ValueConverter проверьте, будет ли его новая строка, а затем установите видимость для скрытия еще видимой.

+0

Как я могу проверить, эта строка является новой. Я не нашел это свойство, которое указывает, что эта строка является новой. Если бы я знал это, я набрал многоточие. – 2xMax

+0

Вы можете использовать свойство DataRow.RowState, чтобы проверить, является ли DataRowState DataRowState.Added. – Viv

Смежные вопросы