簡體   English   中英

WPF DataGrid中的按鈕綁定不會更新

[英]Binding to Button in WPF DataGrid does not update

我的WPF應用程序中有一個DataGrid,其中的列包含布爾值。 我想鏡像DataGridCheckBoxColumn,但是我想將復選框更改為彩色文本框。 因此,對於真值,它將顯示綠色的“通過”,而對於假值,將顯示紅色的“失敗”。 我試過設置DataGridCheckBoxColumn.ElementStyle以及還有一個內部帶有按鈕的DataGridTemplateColumn,但是綁定不會更新。 加載時設置很好,但更新項目時設置不好。 數據網格包含TestPointAttempts的集合。

這是模板列中帶有按鈕的代碼。

<DataGridTemplateColumn Header="Talk Out"  >
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Content="{Binding TalkOut, Converter={StaticResource BoolToPassFailConverter}, Mode=TwoWay}" 
                                    Foreground="{Binding TalkOut, Converter={StaticResource BoolToGreenRedConverter}, Mode=TwoWay}" 
                                    Style="{StaticResource TestResultButtonStyle}" 
                                    Click="TalkOutButton_Click"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

我能夠使click事件正常運行並更新代碼中的“ TalkOut”值,但“文本”和“前景”按鈕不會更新。 在我的視圖模型中,我有代碼來更新項目。 我將選定的單元格捕獲為TestPointAttempt,並將其傳遞給viewmodel進行更新。 這是我的視圖模型代碼:

public void ToggleTestResult(TestPointAttempt tpa, bool inOutSwitch)
    {
        if (inOutSwitch)
        {
            tpa.TalkIn = !tpa.TalkIn;
            RaisePropertyChanged(() => tpa.TalkIn);
        }
        else
        {
            tpa.TalkOut = !tpa.TalkOut;
            RaisePropertyChanged(() => tpa.TalkOut);
        }
    }

這是我的testPointAttempt模型:

 public class TestPointAttempt
{
    public string Id { get; set; }

    public int TestAttemptNumber { get; set; }

    public bool? TalkIn { get; set; }
    public bool? TalkOut { get; set; }
    ...
}

我如何使單元更新更改?

TestPointAttempt需要實現INotifyPropertyChanged,而setter需要觸發propertyChanged事件。

另一種選擇是為此使用Fody

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM