2012-03-06 51 views
0

我正試圖將DataGrid.ItemSource綁定到ObservableCollection<SearchObject>。 SearchObject是一個具有一些公共成員變量(一個名爲「參數」)的自定義類。參數是一個自定義類,並有一個名爲「query」的公共成員變量(類型爲字符串)。我怎樣才能讓「查詢」字符串顯示在數據網格中。如何讓WPF DataGrid在DataGridTextColumn中使用類的成員變量?

我試過Binding="{Binding ElementName=parameters, Path=query}"DataGridTextColumn之內,但它似乎沒有工作。我猜想這會引用參數對象,然後查找它的查詢成員變量,但這似乎不起作用。

任何想法?這是我的XAML:

<DataGrid HorizontalAlignment="Stretch" Name="watchListDataGrid" 
    VerticalAlignment="Stretch" IsReadOnly="True" 
    AlternatingRowBackground="#FFE4F0FC" 
    HorizontalScrollBarVisibility="Disabled" 
    SelectionChanged="watchListDataGrid_SelectionChanged" 
    CanUserReorderColumns="False" 
    CanUserSortColumns="False" 
    AutoGenerateColumns="False" KeyUp="watchListDataGrid_KeyUp"> 
<DataGrid.ContextMenu> 
    <ContextMenu > 
     <MenuItem Header="Remove" Click="MenuRemoveWatchListItem_Click" /> 
    </ContextMenu> 
</DataGrid.ContextMenu> 
<DataGrid.Columns> 
    <DataGridTextColumn Header="Query" Width="*" 
     Binding="{Binding ElementName=parameters, Path=query}" /> 
</DataGrid.Columns> 

回答

0

我能夠解決問題。 Yazan,您的建議使用此代碼DID工作:

<DataGridTextColumn Binding="{Binding Path=query}" /> 

但是,我想念{get;組; }爲SearchObject的「參數」成員變量。當我添加這些,它都工作正常:

public class SearchObject : ISerializable 
{ 
    public SearchParameters parameters { get; set; } 

再次感謝您的幫助!

1

假設你的DataGrid的ItemsSource綁定到這樣的:

<DataGrid ItemsSource={Binding Path=parameters}>

的DataGridTextColumn的結合應該是:

<DataGridTextColumn Binding="{Binding Path=query}" />

您可以使用ElementName引用XAML中的另一個元素。例如,如果您想將TextBlock的文本綁定到TextBox的文本:

<TextBox Name="myTextBox" /> 
<TextBlock Text={Binding Path=Text, ElementName=myTextBox} /> 
+0

謝謝雅贊。是的,我在代碼中設置ItemSource。我試過Path = parameters.query,它不工作。有任何想法嗎? – Doug 2012-03-07 04:46:18

+0

我的錯誤,我編輯了答案。讓我知道它是如何解決你的。 – 2012-03-07 21:03:21

相關問題