2010-08-31 100 views
0

我已經將對象綁定到WPF控件。如何使用xaml單擊編輯按鈕來切換對象屬性「IsEditMode」,並在之後不使用代碼?這裏是XAML的示例代碼 -更改WPF中按鈕單擊的綁定對象屬性

<Label Style="{StaticResource TitleLabel}" 
     Content="{Binding Path=GroupTitle}" 
     Visibility="{Binding Path=IsEditMode, Converter={StaticResource boolToVis}}" 
     HorizontalAlignment="Left" /> 

<Button Content="Edit" HorizontalAlignment="Right" VerticalAlignment="Center"> 
    <Button.Triggers> 
     <EventTrigger RoutedEvent="Button.Click"> 
      <!--Toggle the bindedobject.IsEditMode property of click of button--> 
     </EventTrigger> 
    </Button.Triggers> 
</Button> 

回答

1

只使用XAML和落後

沒有代碼,我不認爲這是可能的,沒有C#(或VB)代碼在所有的,但你可以在沒有代碼隱藏的情況下使用MVVM pattern。所以,你會 C#代碼,只是沒有在代碼隱藏...

如果你走這條路,你需要從您的視圖模型暴露的命令:

private DelegateCommand _enterEditModeCommand; 
    public ICommand EnterEditModeCommand 
    { 
     get 
     { 
      if (_enterEditModeCommand== null) 
      { 
       _enterEditModeCommand= new DelegateCommand(EnterEditMode); 
      } 
      return _enterEditModeCommand; 
     } 
    } 

    private void EnterEditMode() 
    { 
     IsEditMode = true; 
    } 

並結合您的按鈕該命令:

<Button Content="Edit" Command="{Binding EnterEditModeCommand}" 
     HorizontalAlignment="Right" VerticalAlignment="Center"> 
+0

我們可以隱藏按鈕單擊上的標籤嗎? – 2010-08-31 12:46:21

+0

是的,您只需將標籤可見性綁定到VM的屬性,然後在EnterEditMode中更新該屬性 – 2010-08-31 15:33:52

0

還有那些已經在框架控制:

<Label Style="{StaticResource TitleLabel}" 
     Content="{Binding Path=GroupTitle}" 
     Visibility="{Binding Path=IsEditMode, Converter={StaticResource boolToVis}}" 
     HorizontalAlignment="Left" /> 

<ToggleButton Content="Edit" HorizontalAlignment="Right" VerticalAlignment="Center" 
     IsChecked="{Binding IsEditMode}"/>