0
我正在使用this作为我当前需要的源代码。 它工作正常,但我可以选择我的单选按钮只有一次。这里是我的代码:绑定单选按钮以枚举silverlight
<StackPanel Orientation="Vertical" Grid.Column="0" >
<sdk:Label Content="Materiale:" Margin="0,0,0,5" />
<RadioButton GroupName="Materiale" Margin="0,0,0,2"
Content="All"
IsChecked="{Binding Path=Materiale,
Mode=TwoWay,
Converter={StaticResource EnumToVisibilityConverter},
ConverterParameter=All}"
Command="{Binding CambioMaterialeCommand}" />
<RadioButton GroupName="Materiale" Margin="0,0,0,2"
Content="RotabiliSingoli"
IsChecked="{Binding Path=Materiale,
Mode=TwoWay,
Converter={StaticResource EnumToVisibilityConverter},
ConverterParameter=RotabiliSingoli}"
Command="{Binding CambioMaterialeCommand}" />
<RadioButton GroupName="Materiale" Margin="0,0,0,2"
Content="Treni"
IsChecked="{Binding Path=Materiale,
Mode=TwoWay,
Converter={StaticResource EnumToVisibilityConverter},
ConverterParameter=Treni}"
Command="{Binding CambioMaterialeCommand}" />
<RadioButton GroupName="Materiale" Margin="0,0,0,2"
Content="CarrozzeLocomotive"
IsChecked="{Binding Path=Materiale,
Mode=TwoWay,
Converter={StaticResource EnumToVisibilityConverter},
ConverterParameter=CarrozzeLocomotive}"
Command="{Binding CambioMaterialeCommand}"/>
</StackPanel>
在视图模型,我有:
public void CambioMateriale()
{
switch (Materiale)
{
case E_Materiale.All:
IsVisibleLocomotivaCarozza = false;
IsVisibleTrenoPartenza = false;
break;
case E_Materiale.RotabiliSingoli:
IsVisibleLocomotivaCarozza = false;
IsVisibleTrenoPartenza = false;
break;
case E_Materiale.Treni:
IsVisibleLocomotivaCarozza = false;
IsVisibleTrenoPartenza = true;
break;
case E_Materiale.CarrozzeLocomotive:
IsVisibleLocomotivaCarozza = true;
IsVisibleTrenoPartenza = false;
break;
}
}
当把一个断点的开关上,我可以看到一个单选按钮去到另一个时Materiale值发生变化,但如果我尝试重新选择一个已经选择的单选按钮,则该值不会更改并保持之前选定的单选按钮值。
有人能解释我发生了什么事吗?
感谢您的帮助,
[编辑]
这里是我的枚举器:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string parameterString = parameter as string;
if (parameterString == null)
return DependencyProperty.UnsetValue;
if (Enum.IsDefined(value.GetType(), value) == false)
return DependencyProperty.UnsetValue;
object parameterValue = Enum.Parse(value.GetType(), parameterString, true);
return parameterValue.Equals(value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.Equals(true) ? parameter : DependencyProperty.UnsetValue;
}
[/编辑]
如果我理解这个问题,你可以问为什么当你不改变选择的单选按钮(重新选择allready selected)时值不会改变? ......我想我明白你错了,你能解释一下吗? – Carsten
不,我选择无线电A并获得A值,选择无线电B并获得B,但是如果我重新选择无线电A,我仍然有B。此时只应选择一个单选按钮。它更清楚吗? – Arthis
发现它是转换器没有正常工作。 – Arthis