我正在尝试使用弹出按钮,这样当点击它时,当前网格将出现在一个填充了完全相同信息的新窗口中。
我出现了新的窗口,但我试图设置绑定但不确定如何做到这一点。如果我能得到一些帮助请。当我执行OpenChildWindow时,它会打开但没有任何填充。
视图模型:
public ObservableCollection<PaymentInfo> AmortizationCollection {get; set;}
public void OpenChildWindow()
{
new ScheduleView().Show();
}
LoanView.xaml和ScheduleView.xaml
<telerik:RadGridView Grid.Row="3" Grid.ColumnSpan="3" x:Name="AmortGrid"
ScrollViewer.CanContentScroll ="True"
SelectedItem="{Binding SelectedRow, Mode=TwoWay}"
Height="650" AutoGenerateColumns="True" ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ShowGroupPanel="False"
ItemsSource="{Binding AmortizationCollection, Mode=TwoWay}">
我尝试内容设置
Scheduleview.xaml.cs
public ObservableCollection<PaymentInfo> AmortizationCollection { get; set; }
public ScheduleView()
{
InitializeComponent();
AmortGrid.ItemsSource = Content;
}
视图模型:
public void OpenChildWindow()
{
ScheduleView _newScheduleView = new ScheduleView();
_newScheduleView.Content = AmortizationCollection;
_newScheduleView.Show();
}
窗口刚出现(Collection)没有datagrid或anyhting。
答案 0 :(得分:0)
如果是Window
,那么您可以尝试为其设置一些内容,这样您将传递的新控件将被设置为新窗口的内容。我认为你的代码中缺少此属性,直到现在。
// create instance
ScheduleView wind = new ScheduleView();
// set the content, can be a window or a page or anything
wind.Content = new SomeControl;
// show it.
wind.Show();
http://msdn.microsoft.com/en-us/library/system.windows.window.content(v=vs.95).aspx
Stack Overflow的前一个帖子有这个,但是方式过于笼统。
答案 1 :(得分:0)
使用WPF时,我们倾向于使用DataTemplate
来定义我们的数据对象在UI中的外观,因此要重新创建一些UI控件,我们只需要传递数据对象并确保{{{可以从两个位置访问1}}。您显示的是“视图模型”中的代码,但是视图模型不应该对视图有任何了解,当然也不会打开这样的新窗口。
但是,除了错误的术语外,最简单的解决方案是将集合简单地传递给构造函数中的新DataTemplate
:
Window
然后在public void OpenChildWindow()
{
ScheduleView _newScheduleView = new ScheduleView(AmortizationCollection);
_newScheduleView.Show();
}
:
ScheduleView.xaml.cs
只要你在每个地方都有相同的XAML,它应该看起来一样。