2013-06-26 161 views
1

我已經調查了這個問題,但是這是在設計視圖和代碼隱藏解決。但我的問題並沒有什麼不同:我試圖將其作爲只有代碼隱藏功能,因爲我的複選框是根據數據庫數據動態創建的。換句話說,我的複選框數量不穩定。我想只檢查一組複選框中的一個複選框。當我點擊一個複選框時,我想讓其他複選框的缺陷屬性變成false.this是單選按鈕中的相同屬性。我從一個StackPanel我複選框在XAML的一面:複選框像radiobutton wpf c#

<StackPanel Margin="4" Orientation="Vertical" Grid.Row="1" Grid.Column="1" Name="companiesContainer"> 
      </StackPanel> 

我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? 在此先感謝..

+0

任何原因想讓複選框像單選按鈕而不是使用單選按鈕? –

+0

我只是想知道如何做到這一點。我想試試這個。 – rockenpeace

+0

對不起..現在我意識到我有一個選擇,這些複選框都不能檢查 – rockenpeace

回答

3

爲檢查的事件添加一個事件處理程序。創建複選框時,將此(相同)事件處理程序添加到每個複選框。

在事件處理程序中,遍歷您添加的每個複選框,並對每個複選框取消選中它,除非它與發件人是相同的複選框。

我認爲應該做的伎倆(關閉我的頭頂)。

下面是一些代碼,我只是敲了,應該幫助:

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; 
      } 
     } 
    } 
+0

我會嘗試,我會給一個反饋..謝謝.. – rockenpeace

+0

這有效嗎?抱歉,我無法在如此短的時間內提供代碼。 – BaconSah

+0

不..不幸的是我無法做到這一點.. – rockenpeace