2014-01-16 1 views
0

사용자가 목록보기에서 텍스트를 빠르게 복사하고 붙여 넣을 수있는 기능을 제공해야하는 터치 스크린 응용 프로그램을 만들고 있습니다. 메뉴를 만들었지 만 지금은 반복적 인 XAML을 방지하려고합니다.ListView 유니버설 메뉴

<DataTemplate x:Key="copyPaste"> 
    <Button Click="cell_click" Tag="{Binding Tag, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}}}" Foreground="{Binding Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"> 
     <Button.Template> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <ContentPresenter /> 
      </ControlTemplate> 
     </Button.Template> 
     <TextBlock Text="{Binding Tag, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Border}}}" /> 
    </Button> 
</DataTemplate> 

내가 그것을 비슷한이에 구현하려는 : 나는 셀에 대한 다음과 같은 템플릿이

<GridViewColumn.CellTemplate> 
    <DataTemplate> 
     <Grid Tag="{Binding Serial}" DataTemplate="{DynamicResource copyPaste}"></Grid> 
    </DataTemplate> 
</GridViewColumn.CellTemplate> 

내가 반드시 싶지 않아 "그리드"요소,하지만 난 방식 필요 해당 셀에 입력해야하는 값을 참조하십시오.

Grid -> DataTemplate이 존재하지 않습니다. 다른 요소/태그 또는 다른 방법으로이 작업을 수행해야합니까? 내가 잘못된 방향으로가는거야?

답변

0

나는 받아 들일 만하다고 생각하는 방식으로 다음과 같은 작업을했습니다. 그것이 최선의 방법인지 아닌지 나는 모른다. DefaultResources.XAML에서

, 내가 가진 :
<ControlTemplate x:Key="copyPaste" TargetType="Button"> 
    <TextBlock Text="{Binding Tag, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Button}}}" /> 
</ControlTemplate> 

<Style x:Key="copyPasteStyle" TargetType="Button"> 
    <Setter Property="Foreground" Value="{Binding Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"></Setter> 
</Style> 

그런 다음 실제 목록보기에, 나는

<GridViewColumn.CellTemplate> 
    <DataTemplate> 
     <Button Tag="{Binding Serial}" Template="{DynamicResource copyPaste}" Click="cell_click" Style="{DynamicResource copyPasteStyle}" /> 
    </DataTemplate> 
</GridViewColumn.CellTemplate> 

ContentPresenter이는 이후 버튼 그래픽을 제거 분명히 더 이상 필요하지 않습니다 "템플릿"버튼이 설정 중입니다.