我是WPF和MVVM的新手,並試圖遵循此設計,我創建了一個包含多個用戶控件(每個控件10個)的窗口。這些用戶控件將保存一個值,應該可以由用戶輸入並將其發送回數據庫。在用戶控件的實例中設置控件值WPF
我遇到的問題是我在Canvas中實際創建用戶控件,不知道如何使用這些實例在我的View Model中設置控件上的值,其中SaveMethod綁定到Save按鈕將數據保存到數據庫中。謝謝您的幫助。
MainWindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ClientRatesViewModel viewModel = new ClientRatesViewModel();
DataContext = viewModel;
viewModel.GetChargeUnits();
int previousTopPreRate = 10;
foreach (var rate in viewModel.ClientRatesPreAwr)
{
PreAwr preAwr = new PreAwr();
preAwr.tbPreAwrRate.Text = rate.ClientRatesPreAwr;
PreRatesCanvas.Children.Add(preAwr);
preAwr.Width = 500;
Canvas.SetLeft(preAwr, 10);
Canvas.SetTop(preAwr, previousTopPreRate + 10);
previousTopPreRate += +30;
}
int previousTopPostRate = 10;
foreach (var rate in viewModel.ClientRatesPostAwr)
{
PostAWR postAwr = new PostAWR();
postAwr.tbPostAwrRate.Text = rate.ClientRatesPostAwr;
PostRatesCanvas.Children.Add(postAwr);
postAwr.Width = 500;
Canvas.SetLeft(postAwr, 10);
Canvas.SetTop(postAwr, previousTopPostRate + 10);
previousTopPostRate += +30;
}
}
}
ItemsControl的XAML:
<ItemsControl Name="icPreAwr" Margin="10,46,10,10">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="0,0,0,5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding ClientRatesPreAwr }" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
刪除所有代碼並使用適當的XAML。使用ItemsControls(或派生控件,例如ListBoxes)來顯示數據項的集合。從這裏開始閱讀:[數據模板概述](https://msdn.microsoft.com/en-us/library/ms742521.aspx)。 – Clemens 2015-04-03 18:29:58
不是。不。 Nopenopenope。 Noooooope。這裏是如何正確地做到這一點(不是100%符合你的問題,但按照你會明白):http://stackoverflow.com/a/29132115/1228 – Will 2015-04-06 15:23:18
@Clemens謝謝,是可以添加一個用戶控制到一個列表框,或者你的意思是在我的用戶控件中創建包含數據的列表框項目? – 2015-04-08 11:43:21