2009-12-21 222 views
0

大家好,這是我再次!我也有一些問題。我正在開發一個培訓軟件,這就是爲什麼我要問很多問題。我希望你能幫助我。提前致謝。 我的問題如下:Wpf Combobox DataBinding

首先:我有一個註冊窗口有一個組合框。我已經綁定了一個訪問數據源。問題是當我選擇一個項目,它不選擇。它寫入System.data.Datarow。(我想要它像邁克,蘇珊等名單名稱。)

我該如何解決它?問題在哪裏?

public Register() 
{     
    this.InitializeComponent(); 
    Select(); 

} 

public void Select() 
{ 

    DataView view; 
    OleDbConnection con = new OleDbConnection(connectionstring); 
    con.Open(); 
    string sql = "Select * from UserInformation"; 
    OleDbCommand cmd = new OleDbCommand(sql, con); 
    OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    da.Fill(ds, "UserInformation"); 
    view = ds.Tables[0].DefaultView; 
    RegCombo.ItemsSource = view; 

    con.Close(); 
} 

XAML代碼:

<ComboBox IsSynchronizedWithCurrentItem="True" 
    Margin="0,22.447,46.92,0" SelectedItem="{Binding Path=UserName}" 
    VerticalAlignment="Top" Height="29" Grid.Column="3" Grid.Row="1" 
    IsEditable="True" IsDropDownOpen="False" MaxDropDownHeight="266.666666666667" 
    FontSize="16" x:Name="RegCombo" FontWeight="Normal" > 

    <ComboBox.ItemTemplate> 
     <DataTemplate> 

      <TextBlock Text="{Binding Path=UserName}"></TextBlock> 

     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 
+0

你的綁定源是一個DataView。 DataView沒有UserName屬性,我不認爲WPF綁定了特殊情況的列名。但是,我可能錯了,但是:如果您在調試器中運行時查看「輸出」窗口,則可能會看到一些綁定錯誤消息,這些消息讓您更深入瞭解綁定失敗的原因。 – itowlson 2009-12-21 20:37:45

+0

本頁使用DataReader,但它可能會給你一些想法。乾杯。 [http://itbethyname.com/2011/how-to-databind-a-combobox-in-wpf-using-c-or-vb-net/](http://itbethyname.com/2011/how-to -databind -a-combobox-in-wpf-using-c-or-vb-net /) – 2013-02-07 09:58:02

回答

1

你需要設置DisplayMemberPath上您的ComboBox將成爲您想要在ItemsControl

中查看的基礎對象的屬性如果未指定此項,並且您沒有指定刪除該對象上的ToString()方法,您將看到(您現在正在看到的內容) - 對象的限定名稱。

+2

建議澄清,如果他設置了DMP,他不再需要ItemTemplate(事實上,我認爲ItemTemplate覆蓋DMP,因此必須將其刪除才能使DMP正常工作)。 – itowlson 2009-12-21 20:50:14

+0

感謝LanR,我做了你所說的。我解決了這些問題。非常感謝你 – neki 2009-12-22 07:49:46

0

試試這個 綁定= 「{綁定的RelativeSource = {自我的RelativeSource},路徑=用戶名}」

+1

這將在TextBlock本身上尋找UserName屬性。 RelativeSource Self引用正在設置Binding屬性的FrameworkElement。 – itowlson 2009-12-21 20:34:58