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ş:
Olası veri bağlamak için olumsuzluk gö...
dinamik özelliği bir olaya bağlamak na...
'pointer-events' IE için css...
Önbellek POST yöntemleri mümkün HTTP m...
Liste Görünümü içinde ArrayAdapter değ...