小编Dan*_*nte的帖子

如何在XAML中公开控件

我是WPF的新手,我正在创建一个控件.此控件包含DataGrid和一些其他WPF控件.

我创建了我的控件如下:

<UserControl x:Class="MyControls.MyControl" 
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="329" d:DesignWidth="535" >
<Grid>
    <DataGrid Margin="6,25,6,35" Name="dataGrid" SelectionUnit="CellOrRowHeader" x:FieldModifier="public" HeadersVisibility="All"/>
    <OtherControl HorizontalAlignment="Left" x:Name="otherControl" Height="34" VerticalAlignment="Bottom" Width="523" x:FieldModifier="private"/>
    <Label Content="caption" Height="24" HorizontalAlignment="Left" Name="captionLabel" VerticalAlignment="Top" Foreground="#FF2626D1" x:FieldModifier="private"/>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

所以,到目前为止一切顺利,然后我创建了一个容器UserControl,其中包含我之前创建的控件:

<UserControl x:Class="MyContainers.MyContainer"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300" xmlns:my="clr-namespace:MyControls">
<Grid>
    <my:MyControl>

    </my:MyControl>
</Grid>
Run Code Online (Sandbox Code Playgroud)

我不能做的是以下内容:

<my:MyControl>
    <my:MyControl.dataGrid>

    </my:MyControl.dataGrid>
</my:MyControl>
Run Code Online (Sandbox Code Playgroud)

我以前设置的DataGrid的财产FieldModifier作为public以访问它的另一个XAML,但它提出了从Visual Studio的错误.

我需要"公开"我的dataGrid,以便能够添加列及其样式.

我希望能够做到这样的事情:

<my:MyControl.dataGrid.Columns >
    <DataGridTextColumn />
    <DataGridTextColumn />
    ...
    <DataGridTextColumn />
</my:MyControl.dataGrid.Columns>
Run Code Online (Sandbox Code Playgroud)

那么,还不足以将datagrid的属性设置FieldModifierpublic

我还需要做点什么吗?我怎样才能做到这一点?这甚至可能吗? …

wpf xaml wpf-controls

4
推荐指数
1
解决办法
805
查看次数

将DataRow []转换为DataTable而不会丢失其DataSet

我在C#中使用DataSet和DataTables.

我的第一个问题是如何将DataRow []对象转换为DataTable,我用这个链接解决了这个问题:

简单的方式到转换,数据行阵列对数据表

那么,我做的是以下内容:

// Gets the rows according to the relation
DataRow[] rows = someDataRow.GetChildRows("the_table_relation");
DataTable newDataTable = rows.CopyToDataTable<DataRow>();    
Run Code Online (Sandbox Code Playgroud)

我使用的所有数据都在一个DataSet中,因此,我的问题是我的对象newDataTable不再包含对我的DataSet的引用(即newDataTable.DataSet等于null).

有没有办法进行转换而不会丢失对我的DataSet的引用?

希望可以有人帮帮我.

提前致谢

c# datatable datarow dataset

3
推荐指数
1
解决办法
4万
查看次数

创建一个自定义DataGrid的ItemsSource

我正在使用DataGrids,但由于列数根据必须显示的信息而有所不同,因此我在努力绑定数据。

因此,我试图做的是创建一个对象,该对象包含我有时需要的所有列和行,并将该对象绑定到ItemsSource属性。由于我在WindowsForms中使用过DataGridViews,因此我想到了以下内容:

DataTable myTable = new DataTable();

DataColumn col01 = new DataColumn("col 01");
myTable.Columns.Add(col01);
DataColumn col02 = new DataColumn("col 02");
myTable.Columns.Add(col02);

DataRow row = myTable.NewRow();
row[0] = "data01";
row[1] = "data02";
myTable.Rows.Add(row);

row = myTable.NewRow();
row[0] = "data01";
row[1] = "data02";
myTable.Rows.Add(row);
Run Code Online (Sandbox Code Playgroud)

但是我无法找到一种在WPF中执行相同操作的方法,因为例如,我需要一些列作为DataGridComboBoxColumns。

实际上,我已经在该站点上阅读了很多有关它的文章,但是没有一个对我有帮助。我真的迷路了。

有人可以帮我吗?我只需要能够创建一个表,该表可能包含DataGridTextColumns或DataGridComboBoxColumns等,以便将此最终对象绑定到DataGrid的ItemsSource属性。

希望可以有人帮帮我。

c# data-binding wpf datagrid

2
推荐指数
1
解决办法
3万
查看次数

诠释?在Linq问题中LEFT OUTER JOIN时的int和int比较

我正在开发一个需要使用的WinForms项目Linq-To-Sql.我已经能够使用该SqlMetal工具创建我的DataContext ,并进行一些查询.但是现在我遇到了一个我无法解决的问题.

我想做一个LEFT OUTER JOIN如下:

MyDatabase db = new MyDatabase(...);

 var query = from p in db.ParentTable
             join t in db.ChildTable on new {A = p.child_ID, B = p.OtherID}
             equals new {A = t.ID, B = t.OtherID} into j1
             from c in j1.DefaultIfEmpty()
             select new
             {
                  ...
             };
Run Code Online (Sandbox Code Playgroud)

当我编写此查询时,在编译时会在join单词中引发错误:

join子句中某个表达式的类型不正确.调用'GroupJoin'时类型推断失败

我知道这个错误是由之间的比较造成p.child_ID而且t.ID因为p.child_IDint?t.IDint.但是,我该如何解决这个问题呢?如何在LEFT OUTER JOIN没有此错误的情况下执行?

p.child_IDint?因为这列被标记为 …

c# linq linq-to-sql

0
推荐指数
1
解决办法
4315
查看次数