[英]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.