如何让WPF DataGrid在DataGridTextColumn中使用类的成员变量?

时间:2012-03-06 18:17:46

标签: c# wpf datagrid

我正在尝试将DataGrid.ItemSource绑定到ObservableCollection<SearchObject>。 SearchObject是一个自定义类,它有一些公共成员变量(一个名为“parameters”)。参数是一个自定义类,并且具有名为“query”的公共成员变量(类型为string)。如何在数据网格中显示“查询”字符串。

我在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>

2 个答案:

答案 0 :(得分:1)

假设您的DataGrid的ItemsSource绑定到:

<DataGrid ItemsSource={Binding Path=parameters}>

DataGridTextColumn的Binding应为:

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

使用ElementName引用XAML中的另一个元素。例如,如果要将TextBlock的文本绑定到TextBox的文本:

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

答案 1 :(得分:0)

我能够解决问题。 Yazan,您建议使用此代码DID工作:

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

然而,我失踪了{get;组;用于SearchObject的“参数”成员变量。当我添加这些时,一切正常:

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

再次感谢您的帮助!