Флажок, как radiobutton wpf c #

Я исследовал эту проблему, но она решена в представлении дизайна и кода. но моя проблема заключается в небольшой разнице: я пытаюсь сделать это как только код, потому что мои флажки создаются динамически в соответствии с данными базы данных. Другими словами, число моих флажков нестабильно. Я хочу отметить только один флажок в группе флажков. когда я нажал один флажок, я хочу, чтобы свойство ischecked других флажков стало ложным. Это то же свойство в радиокнопках. я беру свои флажки из стековой панели на стороне xaml:


            

мой xaml.cs:

using (var c = new RSPDbContext())
        {
            var q = (from v in c.Companies select v).ToList();

            foreach (var na in q)
            {
                CheckBox ch = new CheckBox();
                ch.Content = na.Name;
                ch.Tag = na;
                companiesContainer.Children.Add(ch);
            }
        }

foreach (object i in companiesContainer.Children)
            {
                CheckBox chk = (CheckBox)i;

                chk.SetBinding(ToggleButton.IsCheckedProperty, "DataItem.IsChecked");
            }

Как я могу предоставить это свойство в флажки в xaml.cs? заранее спасибо..

 rockenpeace26 июн. 2013 г., 14:54
Мне просто интересно, как это сделать. Я хотел попробовать это.
 rockenpeace26 июн. 2013 г., 15:15
извините .. теперь я понял, у меня есть выбор, что ни один из этих флажков не может быть проверен
 Kevin DiTraglia26 июн. 2013 г., 14:49
Есть ли причина, по которой вы хотите, чтобы флажки работали как переключатели вместо использования переключателей?

Ответы на вопрос(1)

Решение Вопроса

ка добавьте этот (один и тот же) обработчик события к каждому флажку.

В обработчике событий пропустите каждый флажок, который вымы добавили, и для каждого флажка снимите флажок, если он не "Тот же флажок, что и у отправителя.

Это, я думаю, должно сработать (от макушки головы).

Вот код, который я только что добавил, который должен помочь:

Часть XAML - это просто панель стека с именем: Name = "checkboxcontainer»

Код за частью:

    public MainWindow()
    {
        InitializeComponent();
        this.Loaded += MainWindow_Loaded;
    }

    private void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        CreateCheckboxes();
    }

    private void CreateCheckboxes()
    {
        for (int i = 0; i <= 5; i++)
        {
            CheckBox c = new CheckBox();
            c.Name = "Check" + i.ToString();
            c.Checked += c_Checked; //This is adding the event handler to the checkbox
            checkboxcontainer.Children.Add(c);
        }
    }

    // This is the event handler for the checkbox
    private void c_Checked(object sender, RoutedEventArgs e) 
    {
        foreach (var control in checkboxcontainer.Children)
        {
            if (control is CheckBox && control != sender)
            {
                CheckBox cb = (CheckBox)control;
                cb.IsChecked = false;
            }
        }
    }
 BaconSah27 июн. 2013 г., 00:30
Это делает это проще?
 rockenpeace26 июн. 2013 г., 15:03
Я постараюсь, и я дам отзыв .. спасибо ..
 BaconSah26 июн. 2013 г., 23:54
Почему не могобъясни, что ты не делаешьТ понять?
 rockenpeace26 июн. 2013 г., 23:51
нет .. к сожалению я не смог этого сделать ..
 BaconSah26 июн. 2013 г., 17:51
Это сработало? Извините я не смогне предоставлять код в такой короткий промежуток времени.
 rockenpeace03 июл. 2013 г., 16:23
большое спасибо вам..
 rockenpeace27 июн. 2013 г., 13:52
я не мог сделать обработчик событий в коде позади ..: (Я '
 BaconSah27 июн. 2013 г., 15:37
мы уже создали один. Функция c_Checked является обработчиком событий.

Ваш ответ на вопрос