2012-03-09 38 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