ユーザーコントロールのサイズを垂直方向に変更できるようにする必要があります。そこで検索を行うと、Thumbクラスとテンプレートの使用方法に関するいくつかの例がわかりました。だから私は、テンプレートの設定:WPF:テンプレートで発生したイベントからコントロールのプロパティ値を取得する方法
<UserControl.Resources>
<!-- ResizeDecorator Template -->
<ControlTemplate x:Key="ResizeDecoratorTemplate" TargetType="{x:Type Control}">
<Grid>
<t:ResizeThumb Height="3" Cursor="ScrollNS" VerticalAlignment="Bottom" Margin="0 0 0 -4" ItemResizeCompleted="ResizeThumb_ItemResizeCompleted" />
</Grid>
</ControlTemplate>
<!-- Designer Item Template-->
<ControlTemplate x:Key="DesignerItemTemplate" TargetType="ContentControl">
<Grid DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}">
<Control Template="{StaticResource ResizeDecoratorTemplate}" />
<ContentPresenter Content="{TemplateBinding ContentControl.Content}" />
</Grid>
</ControlTemplate>
</UserControl.Resources>
をそれから私のセットアップResizeThumbクラス:
Dim si As New SchedItem(id, StartTime, Duration, SO, Title, UnitOfWork, BackgroundColor, Status, LastNote, Miles, Hours)
Dim cc As ContentControl = New ContentControl
cc.Content = si
cc.Template = FindResource("DesignerItemTemplate")
各SchedItem:
Public Class ResizeThumb
Inherits Thumb
Public Event ItemResizeCompleted(sender As Object, e As TimeSlotPanelItemResizeEventArgs)
Public Property id As Integer
Public Sub New()
AddHandler DragDelta, AddressOf ResizeThumb_DragDelta
End Sub
Private Sub ResizeThumb_DragDelta(sender As Object, e As DragDeltaEventArgs)
e.Handled = True
End Sub
Private Sub ItemResized(sender As Object, e As DragCompletedEventArgs) Handles Me.DragCompleted
Dim rs As ResizeThumb = CType(sender, ResizeThumb)
Dim gd As Grid = CType(rs.Parent, Grid)
Dim ee As New TimeSlotPanelItemResizeEventArgs
ee.id = id
ee.ResizeValue = e.VerticalChange
RaiseEvent ItemResizeCompleted(Me, ee)
End Sub
End Class
私のユーザーコントロールは、私は、実行時にテンプレートを追加するように動的に追加されますidを持っています。 ResizeThumbクラスにはDragCompleteイベントがあるので、私はVerticalChangeを返すイベントを発生させており、サイズ変更されたSchedItemのIDも渡したいと思います。私はTemplatedParentにバインドしようとしましたが、許可されていません。 ResizeThumbが持つ唯一の親はグリッドです。私はTemplatedParentにグリッドのタグをバインドしようとしましたが、タグには何も見つかりませんでした。
だから私は尋ねなければなりません。 ResizeThumbクラスのItemResizedイベントハンドラからSchedItemのidプロパティにアクセスする方法はありますか?もしそうなら、どうですか?そうでない場合は、代替案?