2015-10-27 60 views
1

我與後續的XAML一個WPF應用程序如何單擊文本框(或標籤)來切換複選框

<CheckBox IsChecked="{Binding IsTime}" /> 
<TextBlock Text="Time" /> 

我想是,如果用戶點擊文本框,它會切換複選框。以同樣的方式,我們可以在MVC.NET中使用labelcheckbox(以及HTML)

我可以在後面的代碼中使用事件,但我使用MVVM,因此不想使用那些事件。

我的問題和Change a Label's behavior to support toggling by click in WPF之間的區別是,我在我的複選框已經綁定的東西......

我希望這方面的努力提供什麼,我試圖做

<CheckBox IsChecked="{Binding IsTime}" x:Name="Checky" /> 
<TextBlock Text="Time"> 
    <TextBlock.Style> 
     <Style> 
      <Style.Triggers> 
       <Trigger Property="TextBlock.MouseDown" Value="True"> 
        <Setter TargetName="Checky" Property="IsChecked" Value=Not IsTime> //WHAT TO DO HERE 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 
一個清晰的概念

回答

0

使用代碼在你所提供的鏈接,並結合IsChecked相同的特性:

<StackPanel> 
    <CheckBox x:Name="checkbox" IsChecked="{Binding IsTime}"/> 

    <CheckBox IsChecked="{Binding IsTime}" Content="Hello"> 
     <CheckBox.Template> 
      <ControlTemplate TargetType="CheckBox"> 
       <ContentPresenter/> 
      </ControlTemplate> 
     </CheckBox.Template> 
    </CheckBox> 
</StackPanel> 

你知道你有一個親的內容在CheckBox可以模板化,以達到預期的效果,而無需使用多個CheckBox。

1

您可以將TextBox和其他控件放在CheckBox中。通過這種方式單擊文本框也會切換複選框。這裏有一個CheckBox裏有多個項目的例子,但是你當然可以只有TextBox在裏面。

<CheckBox Padding="2" IsChecked="{Binding IsTime}"> 
    <StackPanel Orientation="Horizontal"> 
     <Image Width="24" Height="24" Source="someimage"/> 
     <TextBlock Text="Time"/> 
    </StackPanel> 
</CheckBox>