【问题标题】:how to get access to x:Name from MVVM viewmodel如何从 MVVM 视图模型访问 x:Name
【发布时间】:2019-10-03 07:12:27
【问题描述】:

我想将视图模型中的 Microchart 数据绑定到我的 xamarin prism 应用程序中查看

我尝试通过访问 x:Name 来从后端 c# 绑定,它的工作正常。但我想将我的所有逻辑保留在 viewmodel 中。有没有办法从 viewmodel 访问这个图表元素。

我的 xaml 代码

<StackLayout Orientation="Vertical" >
                    <StackLayout Padding="5,3,5,3" >

                        <microcharts:ChartView HeightRequest="300" WidthRequest="200" x:Name="chartView"/>
                    </StackLayout>
                    <StackLayout Padding="5,3,5,3" >

                        <microcharts:ChartView HeightRequest="300" WidthRequest="200" x:Name="chartView1"/>
                    </StackLayout>
                    <StackLayout Padding="5,3,5,3">

                        <microcharts:ChartView HeightRequest="300" WidthRequest="200" x:Name="chartView2"/>
                    </StackLayout>
                </StackLayout>

和我的后端 c# 代码

var entries = new List<ChartEntry>
                        {
                            new ChartEntry(200)
                            {
                                Label = "January",
                                ValueLabel = "200",
                                Color = SKColor.Parse("#266489")
                            },
                            new ChartEntry(400)
                            {
                                Label = "February",
                                ValueLabel = "400",
                                Color = SKColor.Parse("#68B9C0")
                            },
                            new ChartEntry(100)
                            {
                                Label = "March",
                                ValueLabel = "100",
                                Color = SKColor.Parse("#90D585")
                            }
                        };
            var chart = new BarChart() { Entries = entries };
            var chart1 = new BarChart() { Entries = entries };
            var chart2 = new PointChart() { Entries = entries };
            // or: var chart = new LineChart() { Entries = entries };
            // or: var chart = new DonutChart() { Entries = entries };
            // or: var chart = new RadialGaugeChart() { Entries = entries };
            // or: var chart = new RadarChart() { Entries = entries };
            this.chartView.Chart = chart;
            this.chartView1.Chart = chart1;
            this.chartView2.Chart = chart2;

我想将此后端 c# 代码移动到 viewmodel。我不知道如何将此图表数据绑定到 viewmodel 中查看。谢谢

【问题讨论】:

  • 据我所知,你不能这样做。
  • Chart 属性使用绑定。

标签: xaml mvvm xamarin.forms prism


【解决方案1】:

你不能这样做。

您可以使用 BindingContext 访问 xml 端。

  <microcharts:ChartView HeightRequest="300" WidthRequest="200" ValueLabel="{Binding your_prop}" x:Name="chartView"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    相关资源
    最近更新 更多