2015-04-01 142 views
0

我成功地將一個集合綁定到DataGrid,併成功將一個屬性綁定到DataGridComboBoxColumn。 (有一個名爲snoop的WPF工具,允許我調查數據是否已被綁定)。WPF DataGridComboBoxColumn不顯示初始綁定值

但由於某些原因未顯示初始數據。只有在手動更改選擇後。該值顯然可用。

任何提示或幫助表示讚賞!

謝謝

這是我的XAML:

      <DataGridComboBoxColumn Width="*" 
                DisplayMemberPath="RedOms" 
                Header="MyHeader" 
                ItemsSource="{Binding Source={StaticResource MyModel}, 
                      Path=SRCollection, 
                      Mode=OneWay}" 
                SelectedValueBinding="{Binding AZSR, 
                        Mode=TwoWay}" 
                SelectedValuePath="ID"> 
           <DataGridComboBoxColumn.CellStyle> 
            <Style BasedOn="{StaticResource EDGridCell}" TargetType="DataGridCell"> 
             <Setter Property="IsEnabled" Value="False" /> 
             <Style.Triggers> 

              <DataTrigger Binding="{Binding AZBev, Mode=OneWay}" Value="False"> 
               <Setter Property="Background" Value="{StaticResource KlrColor}" /> 
               <Setter Property="IsEnabled" Value="True" /> 
              </DataTrigger> 
             </Style.Triggers> 
            </Style> 
           </DataGridComboBoxColumn.CellStyle> 

           <DataGridComboBoxColumn.EditingElementStyle> 
            <Style TargetType="ComboBox"> 
             <Setter Property="Background" Value="{StaticResource KlrColor}" /> 
            </Style> 
           </DataGridComboBoxColumn.EditingElementStyle> 
          </DataGridComboBoxColumn> 

這裏是靜態資源EDGridCell

<Style x:Key="EDGridCell" TargetType="{x:Type DataGridCell}"> 
     <EventSetter Event="UIElement.PreviewMouseLeftButtonDown" Handler="DataGridCell_PreviewMouseLeftButtonDown" /> 
     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="Background" Value="Yellow" /> 
       <Setter Property="Foreground" Value="Black" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
+0

硬,沒有看到你的對象說了。我假設你正確使用INotifyPropertyChanged? – 2015-04-01 13:21:21

+0

是的,肯定。我確定這不是一個綁定問題,因爲我可以通過snoop或WPF檢查器查看綁定值。在我看來,它一定是XAML中的一些東西 – user1841243 2015-04-01 13:29:29

回答

1

覆蓋equals方法,因爲很可能你的產品實際上並不相同的實際情況作爲您的項目集合中的一個,所以綁定不起作用。 Snoop將顯示相同的值,所以您可能會認爲它是相同的,但實際上並不相同。把這個在你的類中定義的對象,更換MyClasswith類類型等

public override bool Equals(object obj) 
{ 
    if (obj == null || !(obj is MyClass)) 
     return false; 

    return ((MyClass)obj).Id == this.Id); 
} 

更多信息: https://rachel53461.wordpress.com/2011/08/20/comboboxs-selecteditem-not-displaying/#comments

Why is WPF ComboBox item not updating?

+0

我給你一個大拇指,讓我在正確的方向上放置,因爲綁定對象和列表中的對象之間存在不匹配。我已經有Equals方法,所以這對我沒有幫助。我仍然有問題解決這個問題......目前我有一個骯髒的解決方法,我將向下移動可視化樹並填充網格加載後的文本塊(通過代碼後面)。不是很好的解決方案... – user1841243 2015-04-02 11:37:11

相關問題