ValueConverter没有';无法在FlipView中工作

本文关键字:FlipView 工作 没有 ValueConverter | 更新日期: 2023-09-27 18:27:16

我在FlipView 中有一个ListView

    <FlipView 
        x:Name="flipView"
        AutomationProperties.AutomationId="ItemsFlipView"
        AutomationProperties.Name="Item Details"
        TabIndex="1"
        Width="Auto"
        Grid.Row="2"
        Grid.Column="1"
        VerticalAlignment="Top"
        HorizontalAlignment="Center"
        ItemsSource="{Binding Source={StaticResource itemsViewSource}}" Padding="0" VirtualizingStackPanel.VirtualizationMode="Standard">
        <FlipView.ItemTemplate>
            <DataTemplate>
                <!--
                    UserControl chosen as the templated item because it supports visual state management
                    Loaded/unloaded events explicitly subscribe to view state updates from the page
                -->
                <UserControl Loaded="StartLayoutUpdates" Unloaded="StopLayoutUpdates">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <StackPanel Grid.Column="1" Orientation="Vertical" Margin="0,100,0,0">
                            <ListView x:Name="ListofOptions" Height="400" Width="280" 
                                      ItemsSource="{Binding QuestionOptions}" SelectedValue="{Binding Answer,Mode=TwoWay}"
                                      IsEnabled="{Binding IsEnabled,Mode=TwoWay}" >
                                <ListView.ItemTemplate>
                                    <DataTemplate>
                                        <StackPanel Orientation="Horizontal" >
                                            <StackPanel.Resources>
                                                <common:AltBackgroundConverter x:Key="BGConvertor" />
                                            </StackPanel.Resources>
                                            <StackPanel.Background>
                                                <SolidColorBrush  Color="{Binding IndexWithinParentCollection, Mode=OneWay, Converter={StaticResource BGConvertor}}"></SolidColorBrush>
                                            </StackPanel.Background>
                                            <TextBlock Text="{Binding OptionValue}"  />
                                      </StackPanel>
                                    </DataTemplate>
                                </ListView.ItemTemplate>
                            </ListView>
                        </StackPanel>
                    </Grid>
                </UserControl>
            </DataTemplate>
        </FlipView.ItemTemplate>
    </FlipView>

我编写了一个ListView的值约定器,用于更改替换行的背景。这是召集人的代码

  public class AltBackgroundConverter : IValueConverter
  {
      public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (!(value is int)) return null;
        int index = (int)value;
        if (index % 2 == 0)
            return Colors.White;
        else
            return Colors.LightGray;
    }
    // No need to implement converting back on a one-way binding
    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

当列表框不在FlipView中时,一切正常,但当ListView处于FlipView时,召集人不会执行。请给我建议。

ValueConverter没有';无法在FlipView中工作

在VS2012中创建了一个新的Split XAML项目,并在那里添加了转换器,并在ListView中使用了它,在FlipView中移动ListView后,它仍在工作。我现在猜测这是一个绑定问题,因为根绑定对象已经更改,并且其中一个绑定没有像我们预期的那样得到解决。您是否尝试将Resources标签移动到更高级别,即FlipeView

附言:这更多的是一条评论,但我没有评论的名声!