数据绑定xaml元素,所以我可以删除它们

时间:2014-06-04 19:50:16

标签: c# xaml

有没有办法直接绑定到元素对象本身。

我目前正在展示和隐藏元素,但我更愿意完全删除它们,因为它们永远不需要使用。

有没有办法对元素进行数据绑定,然后根据特定项目的需要删除它?

例如,我们说我有参与者参加对话,== 1,== 2或> 3

<Border Visibility="{Binding ParticipantImagesOneVisibility}" Background="Transparent" BorderThickness="0" Width="62" Height="62" HorizontalAlignment="Left" Margin="0,0,0,5">
    <Image Source="{Binding Participants[0].image.thumbnail_link}" Width="62" Height="62" Stretch="UniformToFill"/>
</Border>
<Border Visibility="{Binding ParticipantImagesTwoVisibility}" Background="Transparent" BorderThickness="0" Width="62" Height="62" HorizontalAlignment="Left" Margin="0,0,0,5">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="31" />
            <ColumnDefinition Width="31"/>
        </Grid.ColumnDefinitions>

        <Image Grid.Column="0" Source="{Binding Participants[0].image.thumbnail_link}" Width="31" Height="62" Stretch="Fill"/>
        <Image Grid.Column="1" Source="{Binding Participants[1].image.thumbnail_link}" Width="31" Height="62" Stretch="Fill"/>
    </Grid>
</Border>
<Border Visibility="{Binding ParticipantImagesThreeVisibility}" Background="Transparent" BorderThickness="0" Width="62" Height="62" HorizontalAlignment="Left" Margin="0,0,0,5">
    <Grid Width="62" Height="62">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="31" />
            <ColumnDefinition Width="31"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="31" />
            <RowDefinition Height="31"/>
        </Grid.RowDefinitions>

        <Image Grid.Column="0" Grid.Row="0" Source="{Binding Participants[0].image.thumbnail_link}" Width="31" Height="31" Stretch="Fill"/>
        <Image Grid.Column="0" Grid.Row="1" Source="{Binding Participants[1].image.thumbnail_link}" Width="31" Height="31" Stretch="Fill"/>
        <Image Grid.Column="1" Grid.Row="0" Grid.RowSpan="2" Source="{Binding Participants[2].image.thumbnail_link}" Width="31" Height="62" Stretch="Fill"/>
    </Grid>
</Border>

有没有一种方法可以动态生成它们(我从未使用过自定义控件),或者只是在我来到它们时删除它们?而不是仅仅隐藏它们(这是daymmmmm slow maynnnnn)?

我特别谈到:

{Binding ParticipantImagesOneVisibility}等。

1 个答案:

答案 0 :(得分:1)

我会使用ItemsControl,ListBox或ListView。对项目使用DataTemplate。现在将ItemsSource绑定到所有这些参与者的ObservableCollection。

现在,在您的业务层中,您有参与者及其列表。如果参与者退出,则应从ObservableCollection中删除参与者。 UI将自动更新,因为它是ObservableCollection。如果添加参与者,则类似。