2010-04-23 3 views
1

у меня есть эти двойные значения:WPF привязка к статическому двойной вар

public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 
      double num1 = 50.0; 
      double num2 = 90.0; 
      double num3 = 120.0; 
      double num4 = 20.0; 
      double num5 = 80.0; 

     } 
    } 

как я связать их с XAML?

<vc:Chart.Series> 
       <vc:DataSeries RenderAs="Column" AxisYType="Primary" > 
        <vc:DataSeries.DataPoints> 
         <vc:DataPoint AxisXLabel="Wall-Mart" YValue="{Binding Source={StaticResource num1}}" /> 

.... 

помощь, пожалуйста

+0

пос надуть? http://stackoverflow.com/questions/1481130/wpf-binding-to-local-variable – dsolimano

ответ

0

Вы не можете. Это переменные с областью видимости локально для конструктора окон. Вы могли бы хотеть, чтобы превратить их в публичные статические поля, как это:

public static readonly double Num1 = 50.0; 

... а затем ссылаться на них в XAML, используя {х: Static} расширение разметки следующим образом:

<vc:DataPoint AxisXLabel="Wall-Mart" YValue="{x:Static local:Window1.Num1}" /> 

В качестве альтернативы, вы может понадобиться, чтобы превратить их в свойства, если они предназначены быть изменены, как:

public double Num1 { get; set; } 

<vc:DataPoint AxisXLabel="Wall-Mart" YValue="{Binding Num1,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}}}" /> 

в конечном счете, вы можете сделать их DependencyProperty, если изменения будут автоматически обнаружены XAML UI.

+0

Я сделал это: public static double _staticNum1 = 50.0; public double Num1 { получает { return _staticNum1; } { _staticNum1 = значение; } } и скрепление работало, плохо попробуйте реализовать зависимостьНедвижимость следующая спасибо – devin250

1

Ну, чтобы сделать вашу работу XAML как вы можете хранить их в словаре ресурсов следующим образом:

public Window1() 
{ 
    InitializeComponent(); 
    // don't actually do this 
    this.Resources["num1"] = 50.0; 
    this.Resources["num2"] = 90.0; 
    this.Resources["num3"] = 120.0; 
    this.Resources["num4"] = 20.0; 
    this.Resources["num5"] = 80.0; 
} 

Но это не так, как вы обычно делаете это. Вместо этого вы должны привязываться к коллекции. Что-то вроде следующего было бы более полезным.

public Window1() 
{ 
    InitializeComponent(); 
    myDataSeries.ItemsSource = new double[] {50.0,90.0,120.0,20.0,80.0}; 
} 

Я не знаю API для управления диаграммы, которую вы используете, но это обычно используется шаблон в WPF иметь свойство ItemsSource, которые могут связываться с коллекцией значений.

1

вы можете объявить «Em в XAML, тоже .....

<Application 
    xmlns:clr="clr-namespace:System;assembly=mscorlib"> 
    <Application.Resources> 
      <clr:Double x:Key="num1">50.0</clr:Double> 
      <clr:Double x:Key="num2">90.0</clr:Double> 
      <clr:Double x:Key="num3">120.0</clr:Double> 
      <clr:Double x:Key="num4">20.0</clr:Double> 
      <clr:Double x:Key="num5">80.0</clr:Double> 
    </Application.Resources> 
</Application> 

затем, если вам нужно получить доступ через код ....

if (Application.Current.Resources.Contains("num1")) 
{ 
    (double)Application.Current.Resources["num1"]; 
} 
Смежные вопросы