2016-06-22 7 views
-2

Ich versuche, ein Paar ToggleButtons zu binden, also wenn das eine markiert ist, wird auch das andere geprüft.WPF Programmatische Bindung Zwei Wege

Wenn ich Taste eins, Taste zwei umschalte, schaltet jedoch, wenn ich Taste zwei umschalt, Knopf eins nicht um.

+3

Erstellen Sie keine Bindungen in Code, es ist ein Chaos ist. –

+0

Sie möchten also, dass die Umschalttasten das Gegenteil von dem tun, was eine normale Umschalttaste tut? Warum brauchen Sie ein Paar Knöpfe, um gleich zu sein? – Paparazzi

+0

@Paparazzi Sie repräsentieren das gleiche Objekt auf dem Server, aber sind in verschiedenen Menüs – KevinA

Antwort

0

Sie können IsChecked Eigentum der beiden Tasten auf der gleichen Eigenschaft in Ihrem ViewModel binden.

In MainWindow.xaml:

<ToggleButton Grid.Row="1" 
        Grid.Column="0" 
        Width="60" 
        Height="30" 
        Content="Button 1" 
        IsChecked="{Binding IsToggleButtonChecked}" /> 
    <ToggleButton Grid.Row="1" 
        Grid.Column="1" 
        Width="60" 
        Height="30" 
        Content="Button 2" 
        IsChecked="{Binding IsToggleButtonChecked}" /> 

In MainViewModel.cs (unter der Annahme, dass Sie MVVM Light verwenden):

private bool _isToggleButtonChecked = false; 
    public bool IsToggleButtonChecked 
    { 
     get { return _isToggleButtonChecked; } 
     set { Set<bool>(ref _isToggleButtonChecked, value); } 
    } 
-1

Ich glaube nicht, dass es ein Problem mit Ihrem Code gibt. Es scheint perfekt zu funktionieren an meinem Ende. Ich habe sowohl in XAML und Codebehind als auch ganz im Code hinterher versucht.

Beide funktioniert wie erwartet und Binding ist perfekt!

Ich habe ein Beispiel unten eingefügt. Prüfen Sie. Die Bindung funktioniert perfekt zu meinem Ende!

XAML:

<Window x:Class="WpfApplication1.MainWindow" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:local="clr-namespace:WpfApplication1" 
xmlns:viewModel="clr-namespace:WpfApplication1.ViewModel" 
mc:Ignorable="d" 
Title="MainWindow" Height="350" Width="525" 
> 
<Grid x:Name="Grid1" /> 
</Window> 

-Code Behind:

using System.Windows; 
using System.Windows.Controls.Primitives; 
using System.Windows.Data; 

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      ToggleButton two = new ToggleButton(); 
      two.Content = "Two"; 
      two.Width = 100; 
      two.Height = 50; 

      /* Set up ToggleButton here*/ 

      this.Grid1.Children.Add(two); 

      ToggleButton one = new ToggleButton(); 
      if (one == null) return; 
      one.Content = "One"; 
      one.Width = 100; 
      one.Height = 50; 
      one.Margin = new Thickness(0, 0, 250, 0); 

      this.Grid1.Children.Add(one); 

      Binding binding = new Binding("IsChecked"); 
      binding.Source = two; 
      binding.Mode = BindingMode.TwoWay; 
      one.SetBinding(ToggleButton.IsCheckedProperty, binding); 
      /* Add two to the UI */ 
     } 
    } 
} 
Verwandte Themen