2012-03-09 69 views
0

我想實現一個TimeSpanPicker,但不是以文本框的常用方式。我想讓Textblock可點擊,所以如果你點擊/點擊它,TimeSpanPicker就會出現。我試了一下這樣的,但是這並不工作:具有TimeSpanPicker支持的可點擊TextBlock

private void tb_Timer_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     TimeSpan TimeSpanDuration = TimeSpan.FromMilliseconds(status.duration); 
     TimeSpanPicker timeSpanPicker = new TimeSpanPicker(); 
     timeSpanPicker.Max = new TimeSpan(TimeSpanDuration.Hours, TimeSpanDuration.Minutes, TimeSpanDuration.Seconds); 
     timeSpanPicker.Step = new TimeSpan(0, 0, 1); 
    } 

我沒有找到通過谷歌的東西並沒有像演藝任何情況下()。 這在某種程度上可能嗎?

在此先感謝!

回答

0

好的,所以我問了一些人,得到了另一個答案,雖然它不是很優雅。你可以做這樣的事情:

在XAML:

xmlns:c4fToolkit="clr-namespace:Coding4Fun.Phone.Controls.Toolkit;assembly=Coding4Fun.Phone.Controls.Toolkit" 

<c4fToolkit:TimeSpanPicker x:Name="_TimeSpanPicker" Visibility="Collapsed" Width="0" Height="0" ValueChanged="_TimeSpanPicker_ValueChanged" /> 
<Button x:Name="DateTimeButton" Content="Button" Height="72" HorizontalAlignment="Left" Margin="68,428,0,0" VerticalAlignment="Top" Width="160" Click="DateTimeButton_Click" /> 

在C#:

using Coding4Fun.Phone.Controls.Toolkit; 
private void DateTimeButton_Click(object sender, RoutedEventArgs e) 
{ 
    TimeSpan TimeSpanDuration = TimeSpan.FromMilliseconds(status.duration); 
    _TimeSpanPicker.Max = new TimeSpan(TimeSpanDuration.Hours, TimeSpanDuration.Minutes, TimeSpanDuration.Seconds); 
    _TimeSpanPicker.Step = new TimeSpan(0, 0, 1); 
    _TimeSpanPicker.OpenPicker(); 
} 

private void _TimeSpanPicker_ValueChanged(object sender, ValueChangedEventArgs<TimeSpan> e) 
{ 
    MessageBox.Show(_TimeSpanPicker.Value.ToString()); 
} 
0

看看這個帖子TimePicker without the TextBox我在哪裏提供了接受的答案。

希望它可以幫助你。

+0

對不起,我不明白這一點。我在我的項目中試過你的代碼,它總是給我一個「ButtonAutomationPeer peer = new ButtonAutomationPeer(button);」的ArgumentNullException。 TimePicker和TimeSpanPicker是否一樣? – S0me0ne 2012-03-09 16:17:45

+0

我不知道這一點,但如果你有消息來源,你可以看看裏面 – Ku6opr 2012-03-12 13:09:46