tile绑定数据
hi,数据不知如何绑定,请求帮忙:nbtz5: 回复 1楼feiyan0320的帖子
感谢提供的Demo,你的问题已经收到了。
我们验证下你的Demo后给你回复。 回复 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>
回复 3楼Alice的帖子
其实我主要是在一个itemcontrol里套了一个tile,我把一个ObservableCollection给了itemcontrol,然后tile里怎么绑定就不知道了,
是一个ObservableCollection里面再套一个ObservableCollection,再给itemcontrol吗 回复 4楼feiyan0320的帖子
直接给一个tile绑定ObservableCollection数据源。
如果是由于嵌套在其他控件内部,无法绑定,那么就先根据控件找到内部控件tile,然后设置绑定。
wpf本身支持根据控件名查找控件,你可以在网上搜到相关的资料。 回复 5楼Alice的帖子
如果我要嵌套到itemcontrol里,想呈现无数个tile,那我只能通过控件查找到每一个tile然后分别把每个集合绑定吗 回复 6楼feiyan0320的帖子
根据我的理解,ObservableCollection集合中有多个对象的示例。C1Tile通过ContentSource绑定到这个集合后,就会按照多个对象的实例自动展示出多个磁贴去显示全部,实际的C1Tile的内容就是多个。
还是说我对你的业务场景的理解有偏差? 回复 7楼Alice的帖子
我把ObservableCollection集合给了tile的ContentSource,似乎只有一个tile,而且如果集合是一个字符串的话,磁贴上展示的是一个一个字符的滚动。 回复 8楼feiyan0320的帖子
把你修改后的demo发给我们,我们帮你看看。 回复 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