我是XAML/WPF的新手,有些地方我不明白。
我不明白为什么我直接在XAML代码中添加的3个单选按钮绑定在一起,而用C#添加的时候却没有绑定。
我所说的“束缚”是指当我检查另一个时,他们不会取消检查他们自己。
<Border Background="#3B3B3B" CornerRadius="10">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="75"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="1"
Grid.Column="0"
Name="CatMenu"
CanVerticallyScroll="True">
<RadioButton/>
<RadioButton/>
</StackPanel>
</Grid>
</Border>
foreach (string folder in folders)
{
Border border = new Border();
RadioButton radioButton = new RadioButton
{
Content = System.IO.Path.GetFileName(folder),
Background = Brushes.Transparent,
Foreground = Brushes.White,
Height = 70,
VerticalAlignment = VerticalAlignment.Center
};
border.Child = radioButton;
CatMenu.Children.Add(border);
}
2条答案
按热度按时间efzxgjgh1#
你的c#代码不等同于xaml标记。在xaml中你直接添加了RadioButton到StackPanel。在代码中你把每个RadioButton放到不同的Border元素中。它们有不同的父元素并且没有绑定在一起。
如果要使用Borders,则必须为所有按钮分配相同的GroupName,如文档中所述
bcs8qyzn2#
在XAML中,如果将多个单选按钮放入一个容器(如StackPanel)中,系统会自动将它们分组在一起。这意味着一次只能选择组中的一个单选按钮,选择其中一个单选按钮将取消选择同一组中的其他单选按钮。
在C#代码中创建单选按钮时,如果希望单选按钮的行为与XAML中的单选按钮类似,则必须手动设置组名称。默认情况下,在C#中创建的每个单选按钮都在自己的组中,因此选择一个单选按钮不会影响其他单选按钮。
若要在C#中将单选按钮组合在一起,只需将GroupName属性设置为所有单选按钮的相同值。例如,可以将要组合在一起的所有单选按钮的GroupName属性设置为“MyGroup”。
这样,当您选择一个单选按钮时,它将取消选择同一组中以前选择的任何其他单选按钮。