我創建了包含名爲ButtonState(Checked,Disabled或Available)的屬性的用戶控件(切換按鈕)。 Control具有內置的鼠標點擊事件,它將狀態從可用狀態轉換爲可用狀態,或者從按下狀態轉換爲可用狀態(如果禁用則不能點擊)。WPF - 雙向綁定
我的目的是創建按鈕的「樹」,這樣的事情:
OPTION 1 OPTION 2
SUBOPTION1 SUBOPTION1 SUBOPTION1 SUBOPTION1
.... .....
所以,如果我點擊按鈕「選項1」(它改變狀態控制範圍之內按下)我想按鈕「選項2「進入狀態DISABLED。如果我再次點擊OPTION 1,它將從PRESSED轉換爲AVAILABLE,OPTION2轉爲AVAILABLE TOO。如果我點擊OPTION2,就應該運行相同的程序(當然類似)。簡而言之:只有一個按鈕可以有PRESSED狀態,如果有一個這樣的狀態,則必須禁用另一個按鈕。如果有一個 - 另一個必須可用。
我創建轉換器(InverseButtonStateConverter)BUTTONSTATE - > BUTTONSTATE
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
switch (((Controls.ButtonState)value))
{
case Controls.ButtonState.Available: return Controls.ButtonState.Available;
case Controls.ButtonState.Pressed: return Controls.ButtonState.Disable;
case Controls.ButtonState.Disable: return Controls.ButtonState.Available;
default: return Controls.ButtonState.Available;
}
}
使用XAML:
<Controls:ToggleRectangleButton HorizontalAlignment="Center" VerticalAlignment="Center" Height="109" Width="210" ButtonText2="Bilety jednorazowe" TextFontSize="25" Grid.Column="0" x:Name="btSingleTicket" Click="btSingleTicket_Click" ButtonState="{Binding ElementName=btTimeTicket, Path=ButtonState, Converter={StaticResource InverseButtonStateConverter}}"/>
<Controls:ToggleRectangleButton HorizontalAlignment="Center" VerticalAlignment="Center" Height="109" Width="210" ButtonText2="Bilety czasowe" TextFontSize="25" Grid.Column="3" x:Name="btTimeTicket" Click="btTimeTicket_Click" ButtonState="{Binding ElementName=btSingleTicket, Path=ButtonState, Converter={StaticResource InverseButtonStateConverter}}"/>
當我運行這段代碼,當我點擊一個按鈕,它的工作好。如果我通過點擊第二個按鈕來打斷它(它不會按我的意願工作),首先按鈕能夠糾正工作消失。
我試圖改變綁定模式,但我不知道如何做到這一點。一些幫助?
使用ViewModel的效果更好 – 2014-09-12 15:18:31