2016-07-19 8 views
-3
geklickt

Ich bin für dieses Verhalten suchen:Kästchen zum Ankreuzen, die machen nicht auf, wenn

<Button Command="{Binding Path=CreateButtonCommand}"> 
    <Button.Content> 
     <CheckBox Content="{Binding Path=Name}" IsHitTestVisible="false" 
        IsChecked="{Binding Path=IsChecked, Mode=OneWay}"/> 
    </Button.Content> 
</Button> 

Aber ich will diesen Blick:

<Button Command="{Binding Path=CreateButtonCommand}"> 
    <Button.Content> 
     <CheckBox Content="{Binding Path=Name}" IsHitTestVisible="false" 
        IsChecked="{Binding Path=IsChecked, Mode=OneWay}"/> 
    </Button.Content> 
    <Button.Template> 
     <ControlTemplate TargetType="Button"> 
      <ContentPresenter /> 
     </ControlTemplate> 
    </Button.Template> 
</Button> 

Ich bin nach, wo die CheckBox machen nicht die Überprüfung, wenn Sie darauf klicken, der Grund für die Schaltfläche, weil ich möchte, wenn der Benutzer klickt, das View Model funktioniert und wenn alles in Ordnung ist, wird es das IsChecked Flag für die Checkbox aktualisieren.

+1

Wenn Sie setzen 'IsHitTestVisible =„false“' die nicht ein einzelnes Ereignis wird ausgelöst und Maus sein wird nicht gefangen genommen. Sie können dieses Ankreuzfeld nicht schlagen – lokusking

+0

Okay, also was ist Ihre Frage? Bitte stellen Sie eine gute [mcve] zur Verfügung, die Ihr spezifisches Problem zuverlässig reproduziert und eine klare und präzise Beschreibung des Problems liefert. –

+0

Wie bekomme ich mein zweites Codebeispiel zum Auslösen des Befehls, der in der Schaltfläche definiert ist? – hhherby

Antwort

0

Ihr Problem ist Ihre Vorlage. Es macht einfach keinen Sinn.

Sie wollen wahrscheinlich etwas tun:

<Button Content="Click me" Width="80" Height="20" Command="{Binding CreateButtonCommand}"> 
       <Button.Template> 
        <ControlTemplate TargetType="Button"> 
         <Grid> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="Auto"></ColumnDefinition> 
           <ColumnDefinition Width="*"></ColumnDefinition> 
          </Grid.ColumnDefinitions> 

          <CheckBox Content="{Binding Path=Name}" Grid.Column="0" IsHitTestVisible="false" IsChecked="{Binding Path=IsChecked, Mode=OneWay}"/> 
          <ContentPresenter Grid.Column="1"> 
          </ContentPresenter> 
          <Rectangle Fill="Transparent" Opacity="1" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Grid.ColumnSpan="2"> 
           <Rectangle.InputBindings> 
            <MouseBinding Command="{TemplateBinding Command}"></MouseBinding> 
           </Rectangle.InputBindings> 
          </Rectangle> 
         </Grid> 
        </ControlTemplate> 
       </Button.Template> 
      </Button> 
+0

In Ihrem Beispiel müssen Sie Klicke auf "Klick mich", um den Befehl zu erhalten. Ich möchte in der Lage sein, auf die "CheckBox" zu klicken, um den Befehl zu erhalten, aber den Scheck nicht zu rendern. – hhherby

+0

@hhherby Aktualisierte Vorlage. Sollte jetzt tun, was Sie gefragt haben – lokusking