У меня есть DataGrid в моем приложении WPF с столбцами, которые содержат булевские значения. Я хочу зеркалировать DataGridCheckBoxColumn, но я хочу изменить этот флажок в цветное текстовое поле. Таким образом, для истинного значения он покажет зеленый «Проход», а для ложного - красный «Сбой». Я попытался установить DataGridCheckBoxColumn.ElementStyle, а также DataGridTemplateColumn с кнопкой внутри, но привязки не обновляются. Они устанавливаются отлично, когда они загружаются, но не тогда, когда элемент обновляется. В сетке данных содержится коллекция TestPointAttempts.привязка к кнопке в WPF DataGrid не обновляется
Вот мой код для столбца шаблона с кнопкой внутри него.
<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>
Я могу получить событие щелчка рабочего и обновить значение «TalkOut» в коде, но кнопка Текст и передний план не обновляют. В моей модели просмотра у меня есть код для обновления элементов. Я хватаю выбранную ячейку как TestPointAttempt и передаю ее в viewmodel для обновления. Вот мой 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; }
...
}
Как получить ячейку для обновления на изменения?
когда вы вызываете 'ToggleTestResult'? и почему бы вам не сообщить свойства внутри 'TalkIn' и' TalkOut' свойство – safi
Yup, вот и все. Благодаря! – WiteCastle