wpf 检验窗体是不是已存在

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf 检验窗体是不是已存在相关的知识,希望对你有一定的参考价值。

如果不存在 new,如果存在则显示

参考技术A 给你个思路

MainWindow mw = null;
foreach (Window w in App.Current.Windows)

if (w is MainWindow)

mw = w as MainWindow;


if (mw == null)

mw = new MainWindow();
mw.Show();

else

mw.Visibility = System.Windows.Visibility.Visible;
本回答被提问者采纳

如何在 WPF 中设置 DataGrid 的 DataSource?

【中文标题】如何在 WPF 中设置 DataGrid 的 DataSource?【英文标题】:How to set the DataSource of a DataGrid in WPF? 【发布时间】:2011-07-20 21:14:17 【问题描述】:

我需要将数据库中的表设置为 WPF 中 GridGrid 的数据源。在 Windows 窗体中,该属性称为 DataSource,但在 WPF 中不存在这样的属性,我该怎么做呢?

【问题讨论】:

您的意思是“在 Windows 窗体中”,而不是“在 C# 中”……C# 是一种语言,而不是 UI 框架 我也这么认为,然后继续编辑它,因为 C# 没有任何意义。 是的,我的意思是 Windows 窗体。感谢指正 【参考方案1】:

您可以使用以下两种方式将数据表绑定到 WPF 中的数据网格。

 datagrid.ItemSource = mydt.DefaultView();

 datagrid.DataContext = mydt.DefaultView();

【讨论】:

【参考方案2】:

这是一个简单的例子:

XAML 部分

<DataGrid Name="dataGrid1" Width="866" Height="auto" HorizontalAlignment="Left" VerticalAlignment="Top" />

C#部分

... [读取和填写表格的代码] ...

da.Fill(myDataTable);
dataGrid1.ItemsSource = myDataTable.DefaultView;

现在您的 DataGrid 将被您的 DataTable 填充

【讨论】:

【参考方案3】:

您可以使用ItemsSource 属性:

<ListView ItemsSource="Binding YourData">
    <ListView.View>
        <GridView>
            <!-- The columns here -->
        </GridView>
    </ListView.View>
</ListView>

如果您更喜欢使用代码隐藏而不是绑定,只需为 ListView 命名并在代码中设置 ItemsSource 属性:

listView1.ItemsSource = YourData;

您还可以将ItemsSource 属性与其他列表控件(DataGridListBoxComboBox 等)一起使用,因为它是在ItemsControl 基类中定义的。


编辑:如果数据源是DataTable,则不能直接将其分配给ItemsSource,因为它没有实现IEnumerable,但可以通过绑定来实现:

listView1.SetBinding(ItemsControl.ItemsSourceProperty, new Binding  Source = YourData );

【讨论】:

但是“YourData”你怎么说是一个必须是一个对象?因为如果我像在 Windows 窗体中那样使用 Datatable,它就不起作用。 啊,是的,DataTable 是一个特例......请参阅我的答案中的编辑 但是我还有一个问题,如果我想将数据绑定到 DataGrid,但是如果我已经在 DataGrid 中定义了列,如何将绑定数据放入现有列中? 我需要例如将某些内容设置为 DataGrid 的 DataSource(我已经实现了),但想象一下我在 DataGrid 中已经有列(作为 TextBox 或/和 ComboBox)。通过定义“绑定”属性,我可以成功地将数据作为文本框放入列的单元格中,但是要将数据作为组合框放入列中,我不明白我该怎么做。 您可以使用 DataGridComboBoxColumn。 cmets中我真的不能给你详细的解释,看documentation中的例子【参考方案4】:

据我所知,GridView 是一个视图而不是独立控件,您通常会将其用作ListView 的视图。在 WPF 中,用于数据填充的属性称为 ItemsSource,您可能希望使用 ListViewDataGrid 以这种方式显示您的数据。

【讨论】:

以上是关于wpf 检验窗体是不是已存在的主要内容,如果未能解决你的问题,请参考以下文章

wpf 一个窗体中点击空白部分关闭另一个窗体

WPF最小化窗体后激活函数显示不了窗体

WPF无边框窗体怎么移动?C#

2022-03-23 WPF面试题 说出使用WPF而不是Windows窗体的一些优点

2022-03-23 WPF面试题 说出使用WPF而不是Windows窗体的一些优点

创建新的 GUI 时,WPF 是否 Windows 窗体的首选? [关闭]