WPF ListView控件已填充但不可见

时间:2011-04-11 21:46:59

标签: wpf data-binding listview visibility

我有一个ListView,填充了ItemsSource,指向登录历史列表,这样我就可以选择以前成功的登录,而不必输入用户,主机等。这似乎工作正常,但由于某种原因,现在数据绑定工作正常,但控件中的项目是不可见的。我可以告诉控件正在正确填充,因为项目的“鬼”可用并在我鼠标悬停时突出显示,正如我的ItemsSource中的正确数字,并且它们被正确绑定 - 例如,如果我的ItemsSource具有LoginA,LoginQ,和LoginZ并点击第二个'隐形'项,LoginQ发生。我已经尝试搞乱不透明度,改变了ItemsSource绑定的位置(登录对话框出现之前/之后等)。没有快乐。与较旧的工作版本相比,我看不到任何看似相关的内容。提示,建议和嘘声欢迎.....

4 个答案:

答案 0 :(得分:1)

听起来列表项类型中的属性要么不是实际属性(它们可能是公共字段,而是您无法绑定到它们),或者它们的值会在代码中稍后更改而您尚未实现{{3通知XAML绑定引擎它们的值已更新。

答案 1 :(得分:1)

devdigital的回答帮助我找到了问题;我试图绑定到我的LoginHistory类中的字段,这些字段定义为:

public string foo;

我之前将字段定义为:

public string foo {get;组; }

但在我遇到一些可访问性问题时更改了它们,并且从未更改过它们。得到{得到;组; } defined允许它们再次对数据绑定可见。 肯(我是OP,但不知何故,这个问题最初是作为'新用户'发布的,所以我认为我不能将这些问题标记为已回答)。

答案 2 :(得分:1)

我有同样的问题,问题出在绑定中,在xaml文件中。

<GridViewColumn Header="Category" Width="Auto" DisplayMemberBinding="{Binding yourVariable}"/>

我更改了后面代码中的一些行(xaml.cs),但没有在xaml中,所以绑定无法正常工作(xaml.cs中的listView已填充,但WPF没有我不知道如何将它们放在xaml中的ListView中。

当我在xaml中修复它时,ListView中的行变为可见。

答案 3 :(得分:0)

这是我的ItemsSource:List的类,以及引用它的XAML。 ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++    公共类LoginHistory     {         公共字符串用户;         公共字符串主机;         公共字符串公司;         等等等等等等......... }

+++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++

            <Border Name="mask" Opacity="0.8"  Background="White" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" CornerRadius="0,0,0,10"/>
            <ListView Background="White" BorderThickness="0" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"
                      IsSynchronizedWithCurrentItem="True" HorizontalAlignment="Stretch" 
                      x:Name="HistoryListView" VerticalAlignment="Stretch" Width="Auto" 
                      Height="Auto" FontSize="14" SelectionMode="Single"
                      SelectionChanged="HistoryListView_SelectionChanged">
                <ListView.OpacityMask>
                    <VisualBrush Visual="{Binding ElementName=mask}"/>
                </ListView.OpacityMask>
                <ListView.ItemContainerStyle>
                    <Style TargetType="{x:Type ListViewItem}">
                        <Setter Property="Height" Value="40"/>
                    </Style>
                </ListView.ItemContainerStyle>
                <ListView.View>
                    <!--
                    <GridView ColumnHeaderTemplate="{StaticResource HeaderTemplateNoArrow}" AllowsColumnReorder="True">
                        -->

                                                             用户                             

                        <GridViewColumn DisplayMemberBinding="{Binding Path=company}">
                            <GridViewColumnHeader>Company</GridViewColumnHeader>
                        </GridViewColumn>

                        <GridViewColumn DisplayMemberBinding="{Binding Path=host}">
                            <GridViewColumnHeader>Host</GridViewColumnHeader>
                        </GridViewColumn>

                    </GridView>
                </ListView.View>
            </ListView>
            <Border BorderThickness="1" Margin="0" BorderBrush="Gray" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" CornerRadius="0,0,0,10">
            </Border>