feiyan0320 发表于 2015-10-13 13:56:00

tile绑定数据



hi,数据不知如何绑定,请求帮忙:nbtz5:

Alice 发表于 2015-10-13 14:49:00

回复 1楼feiyan0320的帖子

感谢提供的Demo,你的问题已经收到了。
我们验证下你的Demo后给你回复。

Alice 发表于 2015-10-13 15:35:00

回复 1楼feiyan0320的帖子

你可以将一个ObservableCollection集合绑定给C1SlideTile。
将类实例化并且添加到ObservableCollection集合,并且通过C1SldeTile的ContentSource设置ObservableCollection集合。并且在C1SlideTile.ContentTemplate里进行类的字段的绑定。

如下是一个简单的working sample,供你参考:
CS代码:
public partial class TileTypes : UserControl
{
    // the sample collection to use as ContentSource
    public ObservableCollection<object> CustomObjects
    {
      get;
      set;
    }
    public TileTypes()
    {
      CustomObjects = new ObservableCollection<object>();
      CustomObjects.Add(new CustomObject() { Header = "object 1", Background= new SolidColorBrush(Colors.OliveDrab) });
      CustomObjects.Add(new CustomObject() { Header = "object 2", Background = new SolidColorBrush(Colors.Green) });
      CustomObjects.Add(new CustomObject() { Header = "object 3", Background = new SolidColorBrush(Colors.GreenYellow) });
      CustomObjects.Add(new CustomObject() { Header = "object 4", Background = new SolidColorBrush(Colors.White) });
      CustomObjects.Add(new CustomObject() { Header = "object 5", Background = new SolidColorBrush(Colors.Navy) });
      CustomObjects.Add(new CustomObject() { Header = "object 6", Background = new SolidColorBrush(Colors.Olive) });

      InitializeComponent();
    }
}

public class CustomObject
{
    public string Header
    {
      get;
      set;
    }
    public Brush Background
    {
      get;
      set;
    }
}

XAML代码:
<c1:C1SlideTile ContentSource="{Binding CustomObjects, ElementName=root}" Header="ContentSource"
                VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" >
    <c1:C1SlideTile.ContentTemplate>
      <DataTemplate>
            <Grid Background="{Binding Background}">
                <TextBlock Text="{Binding Header}"
                           VerticalAlignment="Center" HorizontalAlignment="Center"
                           FontSize="18" Foreground="Tomato"/>
            </Grid>
      </DataTemplate>
    </c1:C1SlideTile.ContentTemplate>
</c1:C1SlideTile>

feiyan0320 发表于 2015-10-13 17:02:00

回复 3楼Alice的帖子

其实我主要是在一个itemcontrol里套了一个tile,我把一个ObservableCollection给了itemcontrol,然后tile里怎么绑定就不知道了,
是一个ObservableCollection里面再套一个ObservableCollection,再给itemcontrol吗

Alice 发表于 2015-10-13 17:54:00

回复 4楼feiyan0320的帖子

直接给一个tile绑定ObservableCollection数据源。
如果是由于嵌套在其他控件内部,无法绑定,那么就先根据控件找到内部控件tile,然后设置绑定。
wpf本身支持根据控件名查找控件,你可以在网上搜到相关的资料。

feiyan0320 发表于 2015-10-13 18:03:00

回复 5楼Alice的帖子

如果我要嵌套到itemcontrol里,想呈现无数个tile,那我只能通过控件查找到每一个tile然后分别把每个集合绑定吗

Alice 发表于 2015-10-14 10:04:00

回复 6楼feiyan0320的帖子

根据我的理解,ObservableCollection集合中有多个对象的示例。C1Tile通过ContentSource绑定到这个集合后,就会按照多个对象的实例自动展示出多个磁贴去显示全部,实际的C1Tile的内容就是多个。

还是说我对你的业务场景的理解有偏差?

feiyan0320 发表于 2015-10-14 22:47:00

回复 7楼Alice的帖子

我把ObservableCollection集合给了tile的ContentSource,似乎只有一个tile,而且如果集合是一个字符串的话,磁贴上展示的是一个一个字符的滚动。

Alice 发表于 2015-10-15 09:12:00

回复 8楼feiyan0320的帖子

把你修改后的demo发给我们,我们帮你看看。

feiyan0320 发表于 2015-10-15 16:41:00

回复 9楼Alice的帖子

<ItemsControlx:Name="itemsControl" ItemsSource="{Binding CVList}" Grid.ColumnSpan="3" Margin="0,4,0,0" Grid.Row="1">
                  <ItemsControl.Template>
                        <ControlTemplate>
                            <ScrollViewer x:Name="ScrollViewer" Padding="{TemplateBinding Padding}">
                              <ItemsPresenter />
                            </ScrollViewer>
                        </ControlTemplate>
                  </ItemsControl.Template>
                  <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapPanel Orientation="Horizontal"/>
                        </ItemsPanelTemplate>
                  </ItemsControl.ItemsPanel>
                  <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <Border Padding="3">
                              <WrapPanel>
                                    <c1:C1SlideTile Content="C1SlideTile" HorizontalAlignment="Left" Margin="0,0,0,0" ContentSource="{Binding Member}"
                        VerticalAlignment="Top" c1:C1TileService.PointerDownAnimation="True" Width="277" Height="100" Padding="0">
                                        <c1:C1Tile.ContentTemplate>
                                          <DataTemplate>
                                                <GridWidth="277" Height="100">
                                                    <Grid.Resources>
                                                      <Style
                TargetType="Border">
                                                            <Setter
                  Property="BorderBrush"
                  Value="LightGray"></Setter>
                                                            <Setter
                  Property="BorderThickness"
                  Value="1"></Setter>
                                                      </Style>
                                                    </Grid.Resources>
                                                    <Grid.RowDefinitions>
                                                      <RowDefinition Height="27*"/>
                                                      <RowDefinition Height="23*"/>
                                                      <RowDefinition Height="28*"/>
                                                      <RowDefinition Height="22*"/>
                                                    </Grid.RowDefinitions>
                                                    <Grid.ColumnDefinitions>
                                                      <ColumnDefinition Width="26*"/>
                                                      <ColumnDefinition Width="45*"/>
                                                      <ColumnDefinition Width="23*"/>
                                                      <ColumnDefinition Width="8*"/>
                                                      <ColumnDefinition Width="88*"/>
                                                      <ColumnDefinition Width="87*"/>
                                                    </Grid.ColumnDefinitions>
                                                    <Grid.Background>
                                                      <LinearGradientBrush EndPoint="1,0" StartPoint="0.0,0.0">
                                                            <GradientStop Color="White"/>
                                                            <GradientStop Color="Thistle"Offset="1"/>
                                                      </LinearGradientBrush>
                                                    </Grid.Background>
                                                    <BorderGrid.ColumnSpan="6" Grid.RowSpan="4"/>
                                                    <Label x:Name="bh" Foreground="DimGray"FontSize="13" FontFamily="微软雅黑" FontWeight="Bold" Height="26" VerticalAlignment="Center" VerticalContentAlignment="Center"
               Margin="8,1,3,0" HorizontalContentAlignment="Center" Opacity="0.5" Grid.Column="2"
               Content="{Binding OrderNo}" Grid.ColumnSpan="3"/>
</Grid>
                                          </DataTemplate>
                                        </c1:C1Tile.ContentTemplate>
                                        <!--<c1:C1Tile.BackContentTemplate>
                                          <DataTemplate></DataTemplate>
                                        </c1:C1Tile.BackContentTemplate>-->
                                    </c1:C1SlideTile>
                              </WrapPanel>
                            </Border>
                        </DataTemplate>
                  </ItemsControl.ItemTemplate>
                </ItemsControl>


这里的CVList就是一个ObservableCollection<Member>集合,tile的contentsource绑定的是Member,然后里面有个label绑定的是Member的属性OrderNo
页: [1] 2
查看完整版本: tile绑定数据