我有这些双重值:
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 :(得分: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 :(得分:1)
你也可以在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"];
}
答案 2 :(得分:0)
你做不到。它们是具有窗口构造函数本地范围的变量。您可能希望将它们转换为公共静态字段,如下所示:
public static readonly double Num1 = 50.0;
...然后使用{x:Static}标记扩展名在XAML中引用它们,如下所示:
<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}}}" />
最终,如果要通过XAML UI自动检测到更改,您可以将它们设为DependencyProperty。