首页 > 解决方案 > WPF 绑定到数据模板按钮列

问题描述

我在 WPF 数据网格中创建了一个按钮列作为模板列。当您按下按钮时,它将按钮内容设置为当前日期。

<DataGridTemplateColumn Header="Date In Source">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button  x:Name="BtnDateInSource" Click="DateButton"  Style="{StaticResource ReceiveWorkButton}" ></Button>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>



<Style TargetType="{x:Type Button}" x:Key="ReceiveWorkButton" >
    <Setter Property="Background" Value="Green"/>
    <Setter Property="Content" Value="{Binding DateInSource}"/>
    <Setter Property="IsEnabled" Value="False"/>            
    <Style.Triggers>
        <DataTrigger Binding="{Binding DateInSource}" Value="{x:Null}" >
            <Setter Property="Background" Value="#A3BF3B" />
            <Setter Property="Content" Value="Receive Work" />
            <Setter Property="IsEnabled" Value="True"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

当前的问题是,由于它是一个模板列,我似乎无法将它绑定到数据源(MVVM)。

因此,用户按下按钮,它会将按钮文本更改为当前日期/时间。我现在想把它写回数据库。
我的 MVVM 可观察集合InspectionStatus在类中SourceInspection

我想用 XAML 来做,但也许必须用INotifyPropertyChanged?

DatagridContext:背后的代码:

    System.Windows.Data.CollectionViewSource SourceViewSource =
    ((System.Windows.Data.CollectionViewSource) 
    (this.FindResource("SourceViewSource")));
    _context.SourceInspections.Load();
    SourceViewSource.Source = _context.SourceInspections.Local;

我想我想通了,使用了这个... 在按钮单击时更新 wpf datagrid

问候 K。

标签: c#wpfdata-bindingdatagriddatagridtemplatecolumn

解决方案


推荐阅读