在Blend for Visual Studio中: 如何创建一组ToggleButtons,其中一次只检查一个ToggleButton或者没有?
我尝试使用RadioButtons并编辑了他们的模板,使它们看起来像ToggleButtons。但是我应该将它们分组,只检查其中一个(或没有)?
我还尝试创建一个Listbox并使用ToggleButtons作为项目,但这也不起作用。
如果没有其他办法,也许有人可以轻松解释如何使用我尝试的其中一种解决方案。
非常感谢!
答案 0 :(得分:2)
您应该使用RadioButtons并将Style
属性设置为ToggleButton
<RadioButton Style="{StaticResource {x:Type ToggleButton}}" />
Panel中的所有RadioButtons
(例如StackPanel
)都会自动分组。因此,如果检查了一个RadioButton
,则所有其他人将取消选中。
<StackPanel>
<RadioButton Content="Windows XP" IsChecked="True" Style="{StaticResource {x:Type ToggleButton}}"/>
<RadioButton Content="Windows Vista" Style="{StaticResource {x:Type ToggleButton}}"/>
<RadioButton Content="Windows 7" Style="{StaticResource {x:Type ToggleButton}}"/>
</StackPanel>
如果您想在一个公共面板中对RadioButtons
进行分组,可以通过设置不同的GroupNames
来划分它们,如下所示:
<StackPanel>
<RadioButton GroupName="Os" Content="Windows XP" IsChecked="True"/>
<RadioButton GroupName="Os" Content="Windows Vista" />
<RadioButton GroupName="Os" Content="Windows 7" />
<RadioButton GroupName="Office" Content="Microsoft Office 2007" IsChecked="True"/>
<RadioButton GroupName="Office" Content="Microsoft Office 2003"/>
<RadioButton GroupName="Office" Content="Open Office"/>
</StackPanel>
这会将“Office”和“OS”RadioButtons
分为同一小组中的两个独立群组。
答案 1 :(得分:0)
由于RadioButton继承了ToggleButton,您可以使用RadioButton的分组功能,并恢复由RadioButton覆盖到其原始ToggleButton行为的切换功能。
public class ToggleRadioButton : RadioButton
{
protected override void OnToggle()
{
if (IsChecked == true) IsChecked = IsThreeState ? (bool?)null : (bool?)false;
else IsChecked = IsChecked.HasValue;
}
}