2014-01-10 5 views
2

XamDataPresenter의 언 바운드 필드에 단추를 추가하려고합니다. 여기 WPF 바인딩 : 그리드의 언 바운드 필드에 단추 추가

버튼 템플릿입니다 :

 <Style x:Key="CancelButtonTemplate" TargetType="{x:Type igDP:CellValuePresenter}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}"> 
         <Button x:Name="CancelButton" Content="Cancel" Command="{Binding CancelButtonCommand}" Width="80" Height="20" /> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

을 그리고 여기 XamDataPresenter에서 언 바운드 필드 : 버튼이 결합 된 것을

    <igDP:UnboundField Name="CancelOrder" Label="Cancel Order" Column="11"> 
         <igDP:UnboundField.Settings> 
          <igDP:FieldSettings CellValuePresenterStyle="{StaticResource CancelButtonTemplate}" CellHeight="12" CellWidth="50"> 
          </igDP:FieldSettings> 
         </igDP:UnboundField.Settings> 
        </igDP:UnboundField>      
       </igDP:FieldLayout.Fields> 

은 "CancelButtonCommand" to는 viewmodel의 public 속성이며, 그것이 작동하는지 확인했습니다. 템플릿없이 XamDataPresenter 외부에 단추가 있습니다.

버튼이 눈금에 나타나지만 내가 그것을 누르면 아무 일도 일어나지 않습니다.

내가 뭘 잘못하고 있니?

+0

올바른 수정을 위해 binding.how에 문제가 있습니까? –

+0

내 제안을 아래에서 시도해 보셨습니까? 내 대답과 같은 XAML을 수정하고 작동하는지 확인하기 위해 기본적으로 명령에 대해 어떤 행동을 취해야하는지 알려줘야합니다. –

+1

답장을 보내 주셔서 감사합니다. 문제는 바인딩만으로 인한 것입니다. 경로가 변경되어 작동했습니다.

답변

1

스타일에 바인딩에 약간을 추가해야한다고 생각합니다. 다음으로 변경해보십시오.

<Button Command="{Binding DataContext.CancelButtonCommand, RelativeSource={RelativeSource AncestorType={x:Type igDP:XamDataGrid}}}" 
           CommandParameter="{Binding}"> 

XamDataPresenter 또는 XamDataGrid를 사용하고 있습니까? 표현자인 경우 위의 x를 변경하십시오. XamDataGrid 대신 XamDataPresenter를 입력하십시오.

또한 기억해야 할 것은 명령이 어떤 행을 처리 할 것인지 알 수 있도록 CommandParameter를 추가해야한다는 것이고 그 방법 내에서 SelectedItem이 필요합니다. 그렇지 않으면 모든 버튼이 똑같이 작동합니다. 내 경우에는, 각 버튼은이에 있던 행의 객체에 뭔가를하도록되어

+1

Thanks 선택한 항목을 언급하기 위해 ..하지만 내 경우에는 각 항목이 선택한 항목을 삭제하므로 원하는대로 작동합니다. –

1

사용 버튼과 아래 (요소가 바인딩).

<Button x:Name="CancelButton" Content="Cancel" Command="{Binding ElementName=theotherbuttonworkingthiscommand,Path=DataContext.CancelButtonCommand}" Width="80" Height="20" /> 

또는 사용 상대 소스가 바인딩 :

<Button Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type window}},Path=DataContext.CancelButtonCommand}">