从视图到其他视图的DataBinding

时间:2016-12-09 19:56:57

标签: c# xamarin data-binding xamarin.forms

我正在尝试在Xamarin.Forms中为ListView创建自定义模板。在模板内部我放了一个自定义视图,其中有一个名为“MainTemplate”的属性,输入也是一个模板。问题是如果MainTemplate包含一个或多个DataBindings,它们将被忽略(所有XAML都被加载,但绑定的数据被skypped)。 Il看起来像在我的模板中,范围会丢失。

listView:

import tensorflow as tf
import numpy as np

raw_data = np.random.normal(10, 1, 100)

# Define alpha as a constant
alpha = tf.constant(0.05)

# A placeholder is just like a variable, but the value is injected from the
# session
curr_value = tf.placeholder(tf.float32)
# Initialize the previous average to some

prev_avg = tf.Variable(0.)
avg_hist = tf.summary.scalar("running_average", update_avg)
value_hist = tf.summary.scalar("incoming_values", curr_value)
merged = tf.summary.merge_all()
writer = tf.summary.FileWriter("./logs")
init = tf.global_variables_initializer()

with tf.Session() as sess:
  sess.run(init)
  for i in range(len(raw_data)):
    summary_str, curr_avg = sess.run([merged, update_avg], feed_dict={curr_value: raw_data[i]})
    sess.run(tf.assign(prev_avg, curr_avg))
    print(raw_data[i], curr_avg)
    writer.add_summary(summary_str, i)

我的自定义模板:

        <ListView ItemsSource="{Binding items}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout>
                        <c:GestureListItem>
                            <c:GestureListItem.MainTemplate>
                                <ContentView BackgroundColor="Red" Padding="10">
                                    <Label Text="{Binding Name}" />
                                </ContentView>
                            </c:GestureListItem.MainTemplate>
                        </c:GestureListItem>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

......及其背后的代码:

<?xml version="1.0" encoding="UTF-8"?>
<Grid xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Xamtools.GestureListItem">
    <ContentView Content="{Binding MainTemplate}" x:Name="mainTemplate" />
</Grid>

1 个答案:

答案 0 :(得分:0)

您需要使用的是DataTemplateSelector