Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用我的listview项目创建wpf转盘?_Wpf - Fatal编程技术网

如何使用我的listview项目创建wpf转盘?

如何使用我的listview项目创建wpf转盘?,wpf,Wpf,我有水平wpf列表视图 <ListView Name="indexList" ItemsSource="{Binding}" HorizontalAlignment="Stretch" VerticalAlignment="Top" BorderBrush="Transparent" Background="CadetBlue" Width="450"> <ListView.ItemsPanel>

我有水平wpf列表视图

 <ListView Name="indexList" ItemsSource="{Binding}" HorizontalAlignment="Stretch" VerticalAlignment="Top" BorderBrush="Transparent" Background="CadetBlue" Width="450">
                    <ListView.ItemsPanel>
                        <ItemsPanelTemplate>
                            <VirtualizingStackPanel Orientation="Horizontal"></VirtualizingStackPanel>
                        </ItemsPanelTemplate>
                    </ListView.ItemsPanel>
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto"></RowDefinition>
                                    <RowDefinition Height="Auto"></RowDefinition>
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition></ColumnDefinition>
                                    <ColumnDefinition></ColumnDefinition>
                                </Grid.ColumnDefinitions>
                                <StackPanel Grid.Row="0" Grid.Column="0" Margin="0,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Top">
                                    <TextBlock>
                               <ContentControl Content="{Binding Field1}" FontSize="10" Foreground="GhostWhite" FontWeight="Bold" HorizontalAlignment="Stretch" VerticalAlignment="Top"></ContentControl>
                                    </TextBlock>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal" Grid.Row="2" Grid.Column="0" Margin="0,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Bottom">
                                    <TextBlock>
                            <ContentControl Content="{Binding Field2}" FontSize="9" Foreground="Bisque" HorizontalAlignment="Stretch" VerticalAlignment="Bottom"></ContentControl>
                                    </TextBlock>
                                    <TextBlock>
                            <ContentControl Content="{Binding Field3}" FontSize="9" Foreground="Coral" HorizontalAlignment="Stretch" VerticalAlignment="Bottom"></ContentControl>
                                    </TextBlock>
                                </StackPanel>
                                <StackPanel Orientation="Vertical" Grid.Column="1" Grid.RowSpan="2" HorizontalAlignment="Stretch" VerticalAlignment="Center">
                                    <Separator></Separator>
                                </StackPanel>
                            </Grid>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>

我想滚动左/右按钮上的所有项目。 因此,当我单击“上一个/左一个”按钮时,listview项目会向左移动,单击“右一个/下一个”按钮时,listview项目会向右移动


与jQuery Carousel类似,单击Prev/Left按钮时,调用
ScrollViewer.LineLeft()

单击Right/Next按钮时,调用
ScrollViewer.LineRight()

在ListView中访问ScrollViewer的最简单方法是对可视树进行自顶向下的搜索,例如:

var scrollViewer = SearchVisualTree<ScrollViewer>(listView);

private T SearchVisualTree<T>(Visual vis) where T:Visual
{
  if(vis==null) return null;
  var range = Enumerable.Range(0, VisualTreeHelper.GetChildrenCount(vis));
  return (
    from i in range
    let child = VisualTreeHelper.GetChild(vis, i) as T
    where child!=null
    select child
  ).Concat(
    from j in range
    let descendant = SearchVisualTree<T>(VisualTreeHelper.GetChild(vis, j) as Visual)
    where descendant!=null
    select descendant
  ).FirstOrDefault();
}
var scrollViewer=SearchVisualTree(listView);
私有T SearchVisualTree(可视可视),其中T:可视
{
如果(vis==null)返回null;
var range=Enumerable.range(0,VisualTreeHelper.GetChildrenCount(vis));
返回(
从我的射程
让child=visualtreeheloper.GetChild(vis,i)作为T
where child!=null
选择子对象
)康卡特先生(
从范围内的j开始
让后代=SearchVisualTree(VisualTreeHelper.GetChild(vis,j)作为可视对象)
其中后代!=null
选择后代
).FirstOrDefault();
}

单击“上一个/左一个”按钮时,调用
ScrollViewer.LineLeft()

单击Right/Next按钮时,调用
ScrollViewer.LineRight()

在ListView中访问ScrollViewer的最简单方法是对可视树进行自顶向下的搜索,例如:

var scrollViewer = SearchVisualTree<ScrollViewer>(listView);

private T SearchVisualTree<T>(Visual vis) where T:Visual
{
  if(vis==null) return null;
  var range = Enumerable.Range(0, VisualTreeHelper.GetChildrenCount(vis));
  return (
    from i in range
    let child = VisualTreeHelper.GetChild(vis, i) as T
    where child!=null
    select child
  ).Concat(
    from j in range
    let descendant = SearchVisualTree<T>(VisualTreeHelper.GetChild(vis, j) as Visual)
    where descendant!=null
    select descendant
  ).FirstOrDefault();
}
var scrollViewer=SearchVisualTree(listView);
私有T SearchVisualTree(可视可视),其中T:可视
{
如果(vis==null)返回null;
var range=Enumerable.range(0,VisualTreeHelper.GetChildrenCount(vis));
返回(
从我的射程
让child=visualtreeheloper.GetChild(vis,i)作为T
where child!=null
选择子对象
)康卡特先生(
从范围内的j开始
让后代=SearchVisualTree(VisualTreeHelper.GetChild(vis,j)作为可视对象)
其中后代!=null
选择后代
).FirstOrDefault();
}

let child=visualtreeheloper.GetChild(vis,I)as T error中出现编译时错误:类型参数“T”不能与“as”运算符一起使用,因为它既没有类类型约束,也没有“class”约束。对不起,我忘了约束T。我在答案中的代码中添加了“where T:Visual”,所以现在它应该可以工作了。我感谢你的帮助,但我不认为它会像水平列表视图项目上的旋转木马一样工作!!每次读到你的问题,我都想知道你所说的“水平列表视图”到底是什么意思。我能想到的唯一解释是,你有
或类似的东西想要操纵。这是正确的吗?如果没有,请发布您尝试滚动的控件的XAML。谢谢,嗨,雷。。我用水平listview xaml代码更新了我的问题。我想要它的“上一个”和“下一个”角上的两个按钮,这样当我单击其中任何一个按钮时,我的listview项目应该向左和向右滚动。不使用listview默认的列表视图水平滚动条。如果我固定了列表视图的宽度并且我不想要它,那么默认的滚动条就会出现在屏幕上。因此,我可以获得与Carousel相同的结果。我在let child=VisualTreeHelper.GetChild(vis,i)中得到编译时错误,因为T错误:类型参数“T”不能与“as”运算符一起使用,因为它既没有类类型约束,也没有“class”约束。对不起,我忘了约束T。我添加了一个“where T:Visual”对于答案中的代码,现在它应该可以工作了。我感谢您的帮助,但我认为它不会像水平列表视图项目上的旋转木马一样工作!!每次读到你的问题,我都想知道你所说的“水平列表视图”到底是什么意思。我能想到的唯一解释是,你有
或类似的东西想要操纵。这是正确的吗?如果没有,请发布您尝试滚动的控件的XAML。谢谢,嗨,雷。。我用水平listview xaml代码更新了我的问题。我想要它的“上一个”和“下一个”角上的两个按钮,这样当我单击其中任何一个按钮时,我的listview项目应该向左和向右滚动。不使用listview默认的列表视图水平滚动条。如果我固定了列表视图的宽度并且我不想要它,那么默认的滚动条就会出现在屏幕上。所以我可以达到和旋转木马一样的效果。