잃어 버렸습니다. SO :제스처를 사용하여 customcontrol의 내용을 변경하는 방법?
다음 코드는 내 customcontrol 인 ccGistaFigure를 통해 텍스트 줄을 올바르게 표시합니다. 이제 InkCanvas를 컨트롤 위에 놓습니다. 처음에는 InkCanvas가 제스처 만 인식하도록 설정됩니다.
내가 알아 내려고하는 것은 특정 제스처를 받으면 InkCanvas가 customcontrol에 자체 변경을 알릴 수 있는지 또는 XAML을 다른 ccGistaFigure 개체에 대해 ccGistaFigure 밖으로 스왑하는 방법이 있습니까?
특히 InkCanvas에서 한 단어를 탭하면 내가 쳤던 단어를 확인하고 customcontrol에 해당 단어의 문자 사이에 공백을 추가 할 수 있기를 원합니다. 따라서 단어가 "테스트 중"이면 단어 위로 탭 (또는 제스처)을하면 텍스트가 "T_e_s_t_i_n_g"로 변경됩니다.
(ccGistaFigure는 FrameworkElement에서 파생되며 FormattedText 개체에서 직접 문자열을 표시합니다).
내가 탭 한 단어를 결정할 수 있다고 가정하면 디스플레이를 변경하는 가장 좋은 방법은 무엇입니까?
나의 현재 XAML은 다음과 같습니다
<UserControl x:Class="Nova5.UI.Views.Ink.InkEditorView"
.....
<Grid Background="#FFE24848" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Canvas Grid.Row="1" Grid.RowSpan="3">
<ScrollViewer VerticalScrollBarVisibility="Auto"
Width="{Binding Parent.ActualWidth, Mode=OneWay, RelativeSource={RelativeSource Self}}"
Height="{Binding Parent.ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}"
>
<Grid Background="White" >
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="100"/>
</Grid.RowDefinitions>
<wc:ccGistaFigure Grid.Row="0"
Text="{Binding Text, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
LineHeight="{Binding LineHeight, UpdateSourceTrigger=PropertyChanged,Mode=OneWayToSource}"
AscenderlineOffset="{Binding AscenderlineOffset, UpdateSourceTrigger=PropertyChanged,Mode=OneWayToSource}"
DescenderlineOffset="{Binding DescenderlineOffset, UpdateSourceTrigger=PropertyChanged,Mode=OneWayToSource}"
MidlineOffset="{Binding MidlineOffset,UpdateSourceTrigger=PropertyChanged,Mode=OneWayToSource}"
BaselineOffset="{Binding BaselineOffset, UpdateSourceTrigger=PropertyChanged, Mode=OneWayToSource}"
WritingPadSize="{Binding WritingPadSize, UpdateSourceTrigger=PropertyChanged, Mode=OneWayToSource}"
/>
<InkCanvas Grid.Row="0" Grid.RowSpan="2"
Background="Transparent"
DefaultDrawingAttributes="{Binding Pen}"
EditingMode="{Binding EditingMode}"
Strokes="{Binding Strokes}" />
</Grid>
</ScrollViewer>
</Canvas>
</Grid>
</UserControl>
어떤 생각이 가장 높이 평가입니다. 감사.
<wc:ccGistaFigure
x:Name="gistaFigure"
TouchDown="TouchEventHandler"
IsManipulationEnabled="true" ../>
및 코드 숨김이 정의 : 당신이 ccGistaFigure
에 터치 이벤트를 사용하려면
이 좀 불분명 무엇 정확히 묻고 있습니다 : 편지를 실제로 '확장'하는 데 문제가 있습니까? 아니면 "이봐, ccGistaFigure를 클릭 했어"라는 이벤트에 문제가 생겼습니까? 아니면 다른 문제가 있습니까? –
@ChrisEelmaa 실제로 위의 모든 문제가 있지만, 대체로 텍스트가 변경된 두 번째 ccGistaFigure로 첫 번째 ccGistaFigure를 "전환"하는 XAML 방식을 기대했습니다. 가장 큰 문제는 정확히 어떤 캐릭터를 클릭했는지 판단하는 것입니다. (참고 : 펜으로 InkCanvas에서 제공하는 "제스처"를 사용합니다.) 감사. –
"가장 큰 문제는 정확히 어떤 캐릭터를 클릭했는지 판단하는 것입니다." 왜 그걸 알아야 해? 나는 우리가 말을하고 있다고 생각했다. –