现在我已经在这个问题的最佳方法上打破了我的头脑,并且我需要为我清除一些疑惑,因为有很多地方我不确定什么是正确的绑定方法。我正在为autocad(使用它的api)的一个小应用程序,并加快调试,我用CMD模拟它;如何在代码隐藏的实例中对XAML中的数据绑定
该应用程序创建我的模型的一个实例,并且该模型实例化my_window。
在模型中,我有ObservableCollection“window_display_data”这应该填充WPF中的数据网格。我知道我可以使用codebehind,来设置datacontext,但我也知道,要使用“属性面板预览”,最好从“标记代码”设置datacontext,这就是我所知道的试图去做。
我能够“意外”填充表格,但在那种情况下,我将我的可观察集合设置为“静态”,我没有在任何地方看到推荐...所以请有人给我一个审查代码和什么是绑定我的网格的首选路径。
我 “ACAD模拟器”
public static void Main()
{
MyCommands start = new MyCommands();
start.model();
}
public partial class MyCommands
{
public ObservableCollection<string> window_display_data { get; set; }
public void model()
{
.....test values initialization...
MainWindow _window = new MainWindow(this);
var application = new System.Windows.Application();
application.Run(_window);
}
}
public partial class MainWindow : Window
{
public static MyCommands myModel { get; set; }
public MainWindow(MyCommands model)
{
myModel = new MyCommands();
myModel= model;
InitializeComponent();
//this.DataContext = myModel;
}
}
我的 “窗口”
<Window
x:Name="MainWindowName"
x:Class="_2017_test_binding.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="local"
xmlns:local1="clr-namespace:_2017_test_binding"
xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2"
xmlns:System="clr-namespace:System;assembly=mscorlib"
Title="MainWindow" Height="220" Width="200" WindowStartupLocation="CenterOwner"
ResizeMode="CanResizeWithGrip" MouseDown="Window_MouseDown" Topmost="True"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Width="192"
GridLinesVisibility="Horizontal" AutoGenerateColumns="False"
ItemsSource="{Binding ElementName=MainWindowName, Path=myDictionary}">
<DataGrid.Columns >
<DataGridTextColumn Header="Command" Binding="{Binding Mode=OneWay, Path=window_display_data}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
我想我应该设置DataContext的窗口,并让它立明到的数据网格;但没有调试,我永远不知道结果会在那里结束。
另外,有人可以为我澄清,为什么VS中的“属性面板中的dataContext窗口”显示指向“对象”而不是实例的链接?这让我完全困惑,因为如果我的实例正在做所有的工作,那么我对该链接有什么用处。
ty [John Strit](http://stackoverflow.com/users/5737039/john-strit)提供编辑建议。 –