gpt4 book ai didi

c# - Windows 8.1 到 10 XAML - 参数不正确异常

转载 作者:太空宇宙 更新时间:2023-11-03 15:28:47 24 4
gpt4 key购买 nike

我有一个在 Windows 8.1 中运行良好的 Windows 8.1 应用程序,但在 Windows 10 机器上运行时,我遇到了 XAML 异常,并显示未处理的异常消息“参数不正确”。

当我将调试器类型更改为混合(托管和 native )时,异常消息是“值不在预期范围内。”

原始 XAML

<ListView x:Name="myListView"
Grid.Row="3"
Margin="10"
HorizontalAlignment="Center"
VerticalAlignment="Top"
BorderBrush="Gray"
BorderThickness="1"
FontSize="{StaticResource FontSizeMedium}"
ItemsSource="{Binding LookupList}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding DataContext.ColumnWidth, ElementName=myListView}" Visibility="{Binding IsVisible, Converter={StaticResource BooleanToVisibilityConverter}}">
<ListView Name="gridList"
Grid.Row="1"
VerticalAlignment="Top"
FontSize="{StaticResource FontSizeMedium}"
ItemsSource="{Binding ColumnValues}"
SelectedIndex="{Binding DataContext.SelectedIndex,
Mode=TwoWay,
ElementName=myListView}"
SelectionMode="Single">
</ListView>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

如果我删除 SelectedIndex 绑定(bind)中的 ElementName, ListView 会加载(但没有正确的功能)。

修改后的 XAML(无一异常(exception)地加载,但不是正确的功能)

<ListView x:Name="myListView"
Grid.Row="3"
Margin="10"
HorizontalAlignment="Center"
VerticalAlignment="Top"
BorderBrush="Gray"
BorderThickness="1"
FontSize="{StaticResource FontSizeMedium}"
ItemsSource="{Binding LookupList}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding DataContext.ColumnWidth, ElementName=myListView}" Visibility="{Binding IsVisible, Converter={StaticResource BooleanToVisibilityConverter}}">
<ListView Name="gridList"
Grid.Row="1"
VerticalAlignment="Top"
FontSize="{StaticResource FontSizeMedium}"
ItemsSource="{Binding ColumnValues}"
SelectedIndex="{Binding DataContext.SelectedIndex,
Mode=TwoWay}"
SelectionMode="Single">
</ListView>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

是否仍然支持以这种方式绑定(bind) ElementName,或者是否有额外的调试步骤可以产生更多信息?

最佳答案

我很惊讶它甚至可以在 Windows Phone 8.1 中运行,因为绑定(bind)不正确。

这里的绑定(bind)表达式{Binding DataContext.SelectedIndex, Mode=TwoWay, ElementName=myListView} 基本上意味着去定位一个名为myListView 的控件,然后找到一个名为控件的 DataContext(在大多数情况下是 ViewModel)的 SelectedIndex

但实际上 SelectedIndex 应该是 ListView 控件的依赖属性

因此修复很简单 - 只需删除 DataContext。-

SelectedIndex="{Binding SelectedIndex, Mode=TwoWay, ElementName=myListView}"

关于c# - Windows 8.1 到 10 XAML - 参数不正确异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34344476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com