2011-04-11 80 views
1

我有一個ListView,填充ItemsSource指向登錄歷史列表,以便我可以選擇以前成功登錄而不必鍵入用戶,主機等。這似乎工作正常,但由於某種原因,現在數據綁定工作正常,但控件中的項目是不可見的。我可以告訴控件正在正確填充,因爲項目的「鬼魂」是可用的,並突出顯示當我把它們鼠標懸停在正確的數量,如我的ItemsSource,並且他們被正確綁定 - 例如,如果我的ItemsSource有LoginA,LoginQ,和LoginZ並點擊第二個'隱形'項目,LoginQ發生。我試着弄亂了不透明度,改變了ItemsSource綁定的位置(在登錄對話框出現之後/之前等)。沒有喜樂。與舊版工作版本相比,我看不到任何看似相關的東西。提示,建議和噓聲歡迎.....WPF ListView控件被填充,但不可見

+0

你可以發佈listview的xaml嗎? – 2011-04-12 00:12:10

回答

1

這聽起來像你的列表項目類型屬性或者不是實際屬性(它們可能是公共字段,而不是綁定),或他們的值更改稍後在您的代碼中,您尚未實施INotifyPropertyChanged以通知XAML綁定引擎其值已更新。

0

這是我的ItemsSource:List的類,以及引用它的XAML。 +++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++ public class LoginHistory { public string user; 公共字符串主機; 公共字符串公司; 等等,等等,等等......... }

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

  <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> 
+1

正如我的回答所述,看起來你正在使用公共領域,而不是屬性。你不能綁定到字段。通過添加getters和setter來將您的字段更改爲屬性。 – devdigital 2011-04-17 20:14:06

1

devdigital的回答幫我找到的問題;我試圖綁定到我的LoginHistory類中定義爲:

public string foo;

我之前已經定義字段:

公共字符串FOO {獲得;組; }

但改變了他們,當我遇到一些問題,並且從未改變他們回來。有{get;組; }定義允許它們再次對數據綁定可見。 Ken(我是OP,但不知怎的,這個問題最初是作爲'新用戶'發佈的,所以我不認爲我可以將它們標記爲已回答)。

1

我有同樣的問題,並在xaml文件中的綁定問題。

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

我已經改變了在後面的代碼(xaml.cs),但不是在XAML一些線路,所以結合而不能正常工作(在xaml.cs ListView中被填充,但WPF沒」不知道如何將它們放入xaml的ListView中)。

當我在xaml中修復該問題時,ListView中的行變爲可見。