禁用WP7的数据透视

时间:2010-11-25 08:17:19

标签: windows silverlight windows-phone-7

看到这篇博文:http://mine.tuxfamily.org/?p=111,我试图在点击数据透视表内的控件时禁用数据透视。

我已尝试使用IsHitTestVisible提出的解决方案,但似乎应用程序在将其设置为false时会锁定。

要重现此问题,请创建一个wp7基本应用程序。使用这个xaml:

<Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid x:Name="ContentPanel" Margin="12,0,12,0">
            <controls:Pivot Name="pivotCtrl" Grid.Row="1">
                <controls:Pivot.HeaderTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Value1}"/>
                    </DataTemplate>
                </controls:Pivot.HeaderTemplate>
                <controls:Pivot.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="40"/>
                                <RowDefinition Height="40"/>
                                <RowDefinition Height="*"/>
                            </Grid.RowDefinitions>

                            <TextBlock Grid.Row="0" Height="38" HorizontalAlignment="Left" VerticalAlignment="Top" Width="200" Text="{Binding Value1}" />
                            <TextBlock Grid.Row="1" Height="38" HorizontalAlignment="Left" VerticalAlignment="Top" Width="200" Text="{Binding Value2}" />
                            <Canvas Grid.Row="2" Width="400" Height="300" Background="Yellow" MouseLeftButtonUp="Canvas_MouseLeftButtonUp" MouseLeftButtonDown="Canvas_MouseLeftButtonDown" />
                        </Grid>
                    </DataTemplate>
                </controls:Pivot.ItemTemplate>
            </controls:Pivot>
        </Grid>
    </Grid>

使用此代码behing:

public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();

        List<Element> elements = new List<Element>();
        for (int i = 0 ; i < 10 ; i++)
            elements.Add(new Element { Value1 = "Value - " + i, Value2 = "Something - " + i});

        pivotCtrl.ItemsSource = elements;
    }

    private void Canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        Debug.WriteLine("On");
        pivotCtrl.IsHitTestVisible = true;
    }

    private void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        Debug.WriteLine("Off");
        pivotCtrl.IsHitTestVisible = false;
    }
}

public class Element
{
    public string Value1 { get; set; }
    public string Value2 { get; set; }
}

在调试模式下,我可以看到“关闭”值,但不能看到“开启”值。

也许还有另一个解决方案。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

此解决方案本周发布。它对你有用吗?

Preventing the Pivot or Panorama controls from scrolling