現在、WPF TimePickerコントロールで作業しています。 コントロールはテキストボックスを継承し、次の形式でのTimeSpanを表示MaskedTexProviderがありますXAML依存関係プロパティへのバインド
「HH:MM」
予想通りこれまでのところ、すべてが働いている(上下矢印時間と分を変更基礎となるTimeSpanなどの)
TimePanerコントロールのTimeSpanプロパティをTimeSpanオブジェクトにバインドする際に問題があります。
例えば 私はXAMLを通じて時間プロパティを設定しようとすると、私は手動ではなく、(基本的なTimeSpanオブジェクトを公開する)時間プロパティを設定した場合、それが動作...
、次のような作品:
ここで<Window x:Class="Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:systhreading="clr-namespace:System.Threading;assembly=mscorlib"
xmlns:myNS="clr-namespace:myNS"
Title="Login" Height="768" Width="1024">
<Window.Resources>
<myNS:TestClass x:Key="myTestingClass"></myNS:TestClass>
</Window.Resources>
<DockPanel DataContext="{Binding Source={StaticResource myTestingClass}}">
<myNS:TimePicker x:Name="myTimePicker" Time="{Binding TheTimeSpan}"></myNS:TimePicker>
</DockPanel>
</Window>
は私のTimePickerのTimeプロパティです:私は、次のような何かをしようとした場合しかし、私の時間プロパティのは呼び出されません「セット」
Private Sub Test_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
TimeSpan.TryParse("2:30", myTimePicker.Time)
End Sub
実装。
Public Class TimePicker
Inherits TextBox
Implements INotifyPropertyChanged
Public Shared TimeSpanProperty As DependencyProperty = DependencyProperty.Register("Time", GetType(TimeSpan), GetType(TimePicker))
Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Private _timeSpan As TimeSpan
Public Property Time As TimeSpan
Get
Return _timeSpan
End Get
Set(ByVal value As TimeSpan)
_timeSpan = value
Dim str As String = _timeSpan.Hours.ToString.PadLeft(2, "0"c) + ":" + _timeSpan.Minutes.ToString.PadLeft(2, "0"c)
Me.Text = str
RaiseEvent PropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs("Time"))
End Set
End Property
'..... the rest of the class implementation '
End Class
私は間違っていますか?
編集:
それは私が働いてから結合 を阻止された問題の組み合わせ を持っていたことが判明。
まず、 私の プロパティのプライベートTimeSpanメンバーを使用していたはずです。私は GetValue()とSetValue()メソッドを使って、 に代りにDependencyPropertyを設定する必要がありました。
第2に、 DependencyPropertyの名前付け規則に従っていませんでした。 "Property"(つまり の名前はTimePropertyにする必要があります)によって、 が "Time"プロパティ名に続いて になるはずです。
第3に、 FrameworkPropertyMetadataタイプを に設定すると、 プロパティが変更されたときに呼び出すメソッドを指定する必要がありました。これは、 のテキストを設定するためのロジックを、 のTimePickerコントロールに配置した場所です。あなたの助けのためのCustom Dependency Properties
ありがとう:
私は私の問題への解決策を見つけること に が最も役に立った情報のほとんどは、このMSDN 条で見つかりました!-Frinny
ご利用いただきありがとうございます。あなたが示唆したように私はドキュメンテーションに戻り、私が間違っていたことの束を発見しました。最も参考になった記事は、あなたが投稿したリンクのサブ記事でした:http://msdn.microsoft.com/en-us/library/ms753358.aspxもう一度ありがとう! – Frinavale