<StackPanel Height="650" Width="650" Background="Green" HorizontalAlignment="Center" VerticalAlignment="Center"> <ItemsControl Name="Display_Test" Margin="10"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel Background="Black" Width="600" Height="600"/> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> <ContentPresenter Content="{Binding}" Margin="15" Height="500" Width="500"/> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </StackPanel>
關於在畫布
// C#代碼開始setbinding ================================= =================================== 公共部分類主窗口:窗口,INotifyPropertyChanged的 { 公共主窗口( ) { this.InitializeComponent();
Canvas canvasSample = new Canvas();
canvasSample.Width = 100;
canvasSample.Height = 100;
canvasSample.Background = new SolidColorBrush(Colors.LightBlue);
CanvasList.Add(canvasSample);
Canvas canvasSample2 = new Canvas();
canvasSample2.Width = 100;
canvasSample2.Height = 100;
canvasSample2.Background = new SolidColorBrush(Colors.LightGreen);
CanvasList.Add(canvasSample2);
Rectangle rectangleSample = new Rectangle();
rectangleSample.Width = 30;
rectangleSample.Height = 30;
RectangleList.Add(rectangleSample);
Rectangle rectangleSample2 = new Rectangle();
rectangleSample2.Width = 30;
rectangleSample2.Height = 30;
RectangleList.Add(rectangleSample2);
Display_Test.ItemsSource = CanvasList;
this.MouseDoubleClick += new MouseButtonEventHandler(MainWindow_MouseDoubleClick);
}
void MainWindow_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
for (int nCanvasNum = 0; nCanvasNum < CanvasList.Count; nCanvasNum++)
{
Binding conBinding = new Binding()
{
Source = RectangleList
};
CanvasList[nCanvasNum].DataContext = RectangleList;
CanvasList[nCanvasNum].SetBinding(ItemsControl.ItemsSourceProperty, conBinding);
}
}
ObservableCollection<Canvas> _canvasList = new ObservableCollection<Canvas>();
public ObservableCollection<Canvas> CanvasList
{
get { return _canvasList; }
set
{
_canvasList = value;
OnPropertyChanged(new PropertyChangedEventArgs("CanvasList"));
}
}
ObservableCollection<Rectangle> _rectangleList = new ObservableCollection<Rectangle>();
public ObservableCollection<Rectangle> RectangleList
{
get { return _rectangleList; }
set
{
_rectangleList = value;
OnPropertyChanged(new PropertyChangedEventArgs("RegtangleList"));
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
#endregion
}
// C#代碼端====================================== ==============================
當我點擊mousebutton double我想在CanvasList中創建RectangleList ... 但我恐怕我不能表明...我認爲這是問題,因爲setbinding ... 我會等待你的回答....
你可以嘗試使用ItemsControl的,而不是帆布的,並設置畫布作爲面板的ItemsControl以同樣的方式你這樣做是爲了顯示畫布 ==>我不明白......我有很多的畫布...但是你告訴我的畫布,並設置畫布作爲ItemsControl的面板....? 爲〔實施例) –
nalsandori
2012-03-24 07:24:12
一步一步來。用ItemsControlList替換你的CanvasList,看看你的RectanglesList的綁定是否有效。然後用ItemsControlList面板工作來獲取所需的外觀 – Nikolay 2012-03-24 07:45:37
好吧,我知道了......但我需要setbinding 所以,我添加的DependencyProperty然後改變MainWindow_MouseDoubleClick 公共靜態只讀的DependencyProperty ItemsProperty = DependencyProperty.Register(「RectangleList」的typeof(的ObservableCollection)的typeof(主窗口),NULL); MainWindow_MouseDoubleClick(對象發件人,MouseButtonEventArgs E) { 綁定conBinding =新的Binding() { 源= RectangleList, }; BindingOperations.SetBinding(CanvasList [0],MainWindow.ItemsProperty,conBinding); } –
nalsandori
2012-03-24 15:04:32