WPF Показывает логическое значение с радиокнопками - PullRequest
0 голосов
/ 16 ноября 2018

Я сейчас нахожусь в процессе создания приложения, которое имеет некоторые представления CRUD.Я хотел показать логическое значение в одном из моих представлений для редактирования строки.Я использовал этот ответ здесь , чтобы попытаться решить эту проблему.Я могу отредактировать строку один раз, если я попытаюсь снова, я получу исключение stackoverflow (меняю ли я на логическое значение или нет)

Объявление ресурса:

<UserControl.Resources>
    <bconv:BoolInverterConverter x:Key="BoolInverterConverter" />
</UserControl.Resources>

Радиокнопки:

<RadioButton Grid.Column="0" GroupName="istemplate"
                                 Content="Yes" IsChecked="{Binding Survey.isTemplate, Mode=TwoWay}" />
                    <RadioButton Grid.Column="1" GroupName="istemplate"  Content="No" Margin="10,0,0,0"
                                 IsChecked="{Binding Survey.isTemplate, Mode=TwoWay, Converter={StaticResource BoolInverterConverter}}" />

Элемент, который я пытаюсь отредактировать логическим значением (isTemplate):

[Table("Survey")]
public class Survey : EntityBase
{
    [Required, StringLength(50)]
    public string Name { get; set; }
    public User ConfirmedBy { get; set; }
    public Boolean isTemplate { get; set; }
    public Assignment Assignment { get; set; }
    public User User { get; set; }
    [DataType(DataType.Date)]
    public DateTime Date { get; set; }
}

Если я забыл указать некоторую информацию, пожалуйста, спросите!

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Проблема была решена благодаря комментарию @ sramalingam24

Это должен быть флажок, а не пара радиокнопок, где обновление одной вызывает другую, что приводит к циклу и переполнению стека

Вспомогательный класс, который я использовал ранее, можно просто удалить. Все, что нужно, это CheckBox

0 голосов
/ 16 ноября 2018

Исключение StackOverFlow указывает на рекурсивное / бесконечное выполнение чего-либо.

Я не видел ваш код, но, дикая догадка - проверьте Сеттер вашего Binding: Survey.isTemplate. Вы назначаете свойство CLR или свойство Bound.

Пример:

private string _Name = null;

public string Name
{
    get
    {
        return _Name;  // If you do return Name here - it will be overflow exception
    }
    set
    {
        _Name = value;  // If you do Name = value instead - it will be Overflow exception.
        NotifyPropertyChange("Name");
    }
}
...