SORU
20 Mayıs 2009, ÇARŞAMBA


XAML bir Tuval'in Çocukları özelliği bağlamak mümkün mü?

Mümkün Tuval için bir bağlantı kurmak için biraz şaşırdım.XAML ile çocuklar. Şöyle görünen bir kod arkasında bir yaklaşım başvurmak zorunda kaldım:

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
    DesignerViewModel dvm = this.DataContext as DesignerViewModel;
    dvm.Document.Items.CollectionChanged  = new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Items_CollectionChanged);

    foreach (UIElement element in dvm.Document.Items)
        designerCanvas.Children.Add(element);
}

private void Items_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
    ObservableCollection<UIElement> collection = sender as ObservableCollection<UIElement>;

    foreach (UIElement element in collection)
        if (!designerCanvas.Children.Contains(element))
            designerCanvas.Children.Add(element);

    List<UIElement> removeList = new List<UIElement>();
    foreach (UIElement element in designerCanvas.Children)
        if (!collection.Contains(element))
            removeList.Add(element);

    foreach (UIElement element in removeList)
        designerCanvas.Children.Remove(element);
}

Çok değil sadece böyle bağlayıcı bir XAML kurmak istiyorum:

<Canvas x:Name="designerCanvas"
        Children="{Binding Document.Items}"
        Width="{Binding Document.Width}"
        Height="{Binding Document.Height}">
</Canvas>

Bir şekilde arka planda bir yaklaşım başvurmadan bunu yapmak için var mı? Konuyla ilgili bazı googling yaptım, ama bu belirli bir sorun için fazla bir şey yok.

Benim nice-View-ViewModel, Model Görünümü ViewModel bunun bilincinde olarak o kadar mucks çünkü benim şimdiki yaklaşım hoşuma gitmiyor.

CEVAP
23 HAZİRAN 2009, Salı


<ItemsControl ItemsSource="{Binding Path=Circles}">
    <ItemsControl.ItemsPanel>
         <ItemsPanelTemplate>
              <Canvas Background="White" Width="500" Height="500"  />
         </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Ellipse Fill="{Binding Path=Color, Converter={StaticResource colorBrushConverter}}" Width="25" Height="25" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemContainerStyle>
        <Style>
            <Setter Property="Canvas.Top" Value="{Binding Path=Y}" />
            <Setter Property="Canvas.Left" Value="{Binding Path=X}" />
        </Style>
    </ItemsControl.ItemContainerStyle>
</ItemsControl>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Learn Math Tutorials

    Learn Math T

    20 Kasım 2011
  • MrDevin521

    MrDevin521

    18 Temmuz 2010
  • VJ VIMANA

    VJ VIMANA

    3 Mayıs 2007