0
我已經在UserControl的XAML中的網格佈局中聲明瞭複選框。獲取用戶控件中的所有複選框 - WP8
<CheckBox Content="Boo" Grid.Column="0" Grid.Row="0"/>
<CheckBox Content="Hoo" Grid.Column="0" Grid.Row="1"/>
我想以某種方式迭代在C#中的所有這些複選框。 我該怎麼做?
感謝,
我已經在UserControl的XAML中的網格佈局中聲明瞭複選框。獲取用戶控件中的所有複選框 - WP8
<CheckBox Content="Boo" Grid.Column="0" Grid.Row="0"/>
<CheckBox Content="Hoo" Grid.Column="0" Grid.Row="1"/>
我想以某種方式迭代在C#中的所有這些複選框。 我該怎麼做?
感謝,
有souldn't是需要以編程方式訪問它們。您應該使用ViewModel並將屬性綁定到複選框。
public class SomeViewModel : INotifyPropertyChanged
{
private bool isCheckBoxOneChecked;
public bool IsCheckBoxOneChecked
{
get { return isCheckBoxOneChecked; }
set
{
if (value.Equals(isCheckBoxOneChecked))
{
return;
}
isCheckBoxOneChecked = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
<CheckBox IsChecked="{Binding IsCheckBoxOneChecked}" Content="Boo" Grid.Column="0" Grid.Row="0"/>
<CheckBox Content="Hoo" Grid.Column="0" Grid.Row="1"/>
您還可以設置DataContext
這樣的:
this.DataContext = new SomeViewModel();
這也可以通過XAML。
然後,您只需將IsCheckBoxOneChecked
屬性設置爲true,並自動檢查複選框。如果用戶取消選中複選框,則該屬性也會被設置爲false,反之亦然。
看看在這裏:Model-View-ViewModel (MVVM) Explained
不過,如果您設置Grid
你可以遍歷所有孩子的Name
屬性:
// Grid is named 'MyGrid'
foreach (var child in this.MyGrid.Children)
{
if (child is CheckBox)
{
var checkBox = child as CheckBox;
// Do awesome stuff with the checkbox
}
}
答案[本問題](http://stackoverflow.com/questions/10279092/how-to-get-children-of-a-wpf-container-by-type)可能會有所幫助 – allonym 2014-10-04 00:29:13