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