Domanda

Ho bisogno di attuare MultiBindings in C # direttamente senza l'utilizzo di XAML, io so come usare l'IMultiValueConverter in C #, ma, come fare:

<MultiBinding Converter="{StaticResource sumConverter}">
  <Binding ElementName="FirstSlider" Path="Value" />
  <Binding ElementName="SecondSlider" Path="Value" />
  <Binding ElementName="ThirdSlider" Path="Value" />
</MultiBinding>

in C #?

È stato utile?

Soluzione

Perché non usare XAML?

Il seguente codice dovrebbe funzionare:

MultiBinding multiBinding = new MultiBinding();

multiBinding.Converter = converter;

multiBinding.Bindings.Add(new Binding
{
    ElementName = "FirstSlider",
    Path = new PropertyPath("Value")
});
multiBinding.Bindings.Add(new Binding
{
    ElementName = "SecondSlider",
    Path = new PropertyPath("Value")
});
multiBinding.Bindings.Add(new Binding
{
    ElementName = "ThirdSlider",
    Path = new PropertyPath("Value")
});

Altri suggerimenti

Ci sono due modi si può fare questo per C # lato (io parto dal presupposto basta non vuole letteralmente porta il MultiBinding al codice dietro, che è davvero uno sforzo inutile se lo fate, XAML è sempre meglio per questo)

  1. modo semplice è quello di rendere gestore di eventi ValueChanged per 3 cursori e calcolare la somma lì e assegnare alla proprietà richiesta.

2. In secondo luogo e il modo migliore per affrontare questi in WPF è quello di rendere lo stile dell'applicazione MVVM. (Spero siete a conoscenza di MVVM). Nella classe ViewModel avrete 3 diverse proprietà. E avete bisogno di un altro immobile 'Sum' anche nella classe. Al vertice sarà ottenere rivalutato ogni volta che l'altro setter 3 proprietà viene chiamato.

public double Value1
 {
     get { return _value1;}
     set { _value1 = value;  RaisePropertyChanged("Value1"); ClaculateSum(); }
 }
 public double Sum
 {
     get { return _sum;}
     set { _sum= value;  RaisePropertyChanged("Sum"); }
 }
 public void CalculateSum()
 {
   Sum = Value1+Value2+Value3;
 }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top