通常RadioButton用于在多个选项中选择一个,如果选项比较多,那么用ComboBox会比较适合,如果选项不是太多,那么用RadioButton比较好。
这里将两个radiobutton绑定到viewmodel里的一个bool属性中,绑定的模式是twoway的。效果是这样的:
其中高限制和低限制分别对应两个组的radiobutton,每一个组的两个radiobutton都绑定同一个bool变量,这里我发现如果只是单纯绑定而不设groupname,会默认将全部他们划分为一个组内,这样会很出现堆栈溢出的问题,因为四个radiobutton中任意触发其中一个,都会导致其他三个变化,而三个中有两个的关系是互斥的,这样导致了两个一直互相通知进入死循环。
另外,在“固定”和“可变”的check下,会动态改变右边需要设置的内容,这里我用了ContentControl 控件来动态选择需要呈现的内容。
前端代码如下:
1 <UserControl.Resources> 2 <convert:BoolValueConverter x:Key="BoolConvert"/> 3 <DataTemplate x:Key="HighFixPanel"> 4 <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" > 5 <Label Content="固定值:" Height="28" Name="label25" /> 6 <TextBox Height="23" 7 Name="textBox20" 8 HorizontalAlignment="Left" 9 Width="108"> 10 </TextBox> 11 </StackPanel> 12 </DataTemplate> 13 <DataTemplate x:Key="HighVaraiblePanel"> 14 <StackPanel Orientation="Horizontal" HorizontalAlignment="Left"> 15 <Label>OPC Item Name :</Label> 16 <TextBox Width="150" Height="26"></TextBox> 17 <Button Width="30" Height="26">B</Button> 18 <Button Width="30" Height="26">T</Button> 19 </StackPanel> 20 </DataTemplate> 21 <DataTemplate x:Key="LowFixPanel" > 22 <StackPanel