WPF如何在datagrid中获取当前编辑的内容?

时间:2015-09-04 17:58:39

标签: c# wpf datagrid

如果绑定到CollectionViewSource的数据网格的源是ObservableCollection,则在首次显示时,实例化OC以显示其中没有任何内容的单行。

<DataGridTextColumn x:Name="observationNameColumn"  Width="auto" Header="Observation Name" Binding="{Binding ObservationName}"/>

我想在任何给定字段中输入文本,以根据用户输入启动EF后端查询。为此,我将这样的按钮添加到同一数据网格中。一个带有点击处理程序的简单按钮......

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button x:Name="XBTNSearch"  Click="XBTNSearch_Click" Padding="5,0,5,0">Enter Search Criteria and Search</Button>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

当使用编辑的值单击该行时,这是使用的代码类型。

    private void XBTNSearch_Click(object sender, RoutedEventArgs e)
    {
        var context = ((Button)sender).DataContext;
        Debugger.Break();
        FindStuff();
    }

当点到达断点时,显示了一个可观察集合类型的空模型,即使我在其中一个字段中输入了某些内容......我想要这个值,所以我可以使用EF来“FindStuff”

如何根据Button的datacontext获取行单元格中的值,该datacontext应该是我编辑文本的那一行?

1 个答案:

答案 0 :(得分:0)

这个问题的解决方案是在Button click事件Hanlder中作为第一个语句......

instance FromField NominalDiffTime where
    fromField f mdat =
        if typeOid f /= typoid interval
            then returnError Incompatible f ""
            else case mdat of
                Nothing  -> returnError UnexpectedNull f ""
                Just dat -> case parseOnly (nominalDiffTime <* endOfInput) dat of
                    Left msg  -> returnError ConversionFailed f msg
                    Right t   -> return t


nominalDiffTime :: Parser NominalDiffTime
nominalDiffTime = do
    (h, m, s) <- interval
    return . fromRational . toRational $ s + 60*(fromIntegral m) + 60*60*(fromIntegral h)

-- | Parse a limited postgres interval of the form [-]HHH:MM:SS.[SSSS] (no larger units than hours).
interval :: Parser (Int, Int, Pico)
interval = do
    h <- signed decimal <* char ':'
    m <- twoDigits <* char ':'
    s <- seconds
    if m < 60 && s <= 60
        then return (h, m, s)
        else fail "invalid interval"

-- functions below borrowed from postgresql-simple
seconds :: Parser Pico
twoDigits :: Parser Int

XDG是Xaml数据网格......